-------
android培训、
java培训、期待与您交流! ----------
public class FactoryModeDemo2 {
/**
* 工厂设计模式:
* 其实很简单的一个例子来说就是: 我们以前过年要做包子,要买面粉
* ,然后发面,还要自己买馅,然后再做。 做的速度慢,而且时间长。
* 自从有了包子铺了,我们就从他那里批发了。人家毕竟是专业的,
* 做的快,味道也好。我们省事了。最起码我们自己不用自己动手了。
* 而包子铺就相当于是这里的工厂
*
* 有的时候接口有很多个实现子类,我们要是在客户端代码里面全部自己
* 一个一个创建,这样自己会很累。自从有了factory工厂, 我们找这个
* factory工厂,他们就能帮我们创建出接口的实现类。只是我们需要声
* 明我们需要创建接口的哪个子类即可。这个可以通过方法的参数来完成。
*/
public static void main(String[] args) {
Factory2.getInstance("AndroidPhone2");
Factory2.getInstance("ApplePhone2");
Factory2.getInstance("YunOsPhone2");
Factory2.getInstance("MyPhone2");
}
}
//我们做一个接口
interface Phone2{
//定义手机的发信息的规范
public abstract void send();
}
class AndroidPhone2 implements Phone2{
@Override
public void send() {
System.out.println("安卓手机发送信息");
}
}
class ApplePhone2 implements Phone2{
@Override
public void send() {
System.out.println("苹果手机发送信息");
}
}
class YunOsPhone2 implements Phone2{
@Override
public void send() {
System.out.println("YunOsPhone手机发送信息");
}
}
//工厂
class Factory2{
public static void getInstance(String type){
//需要传递类的类型
if(type.equals("")){
System.out.println("对不起,类型不能为空");
return ;
}
Phone2 p2=null;
//我们要将被比较的东西放在前面这是为了避免出现空指定异常。
//如果AndroidPhone2没有指定就会出现异常发生。所以为了避免这种问题的出现。我们就把被比较的内容放在左边
if("AndroidPhone2".equals(type)){
p2=new AndroidPhone2();
}else if("ApplePhone2".equals(type)){
p2=new ApplePhone2();
}else{
p2=new YunOsPhone2();
}
p2.send(); //调用发送信息的方法
}
}