深入工厂设计模式

之前我们说了Java里23种设计模式的单例设计模式和适配器设计模式。现在我来说一下工厂设计模式。
为什么要使用工厂类:传统的接口,可能有好几个实现类,在测试类中,如果要更换子类,就要更改主方法,比较麻烦可以在接口和实现类之间加入一个过渡端,通过此过渡端取得接口的实现类,而这个过渡端称之为工厂类。
这是我总结的编写工厂模式的步骤:
①编写一个接口
②写两个或者两个以上的接口实现类
③编写一个工厂类
④编写一个测试类


具体的步骤为:
第一步:
public interface Play{
public void ball();
}


第二步:
public class Football implements Play{
public void ball(){
System.out.println("踢足球!!!");
}
}
public class Basketball implements Play{
public void ball(){
System.out.println("打篮球!!!");
}
}


第三步:
public class Factory{
public static Play getInstance(String className){
Play p = null;
if("football".equals(className)){
p = new Football();
}
if("basketball".equals(className)){
p = new Basketball();
}
return p;
}
}


第四步:
public class Demo2{
public static void main(String[] args){
Play p = null;//定义接口对象
f = Factory.getInstance("football");
f.ball();
}
}
结果可想而知:踢足球。


其实测试类还可以这样写:
public class Demo3{
public static void main(String[] args){
Play p = null;
p = Factory.getInstance(args[0]);
if(p!=null){
p.ball();
}
}
}


在dos里面的命令就有所区别了,是这样的java Demo3 football
结果还是“踢足球”


还要说的就是那个Factory类里面的静态方法,里面的参数className,为什么里面的语句要这样写:
if("football".equals(className)){
}


而不是这样写:
if(className.equals("football")){
}
这里是这样的,因为要是按照第二种写的话,有可能会出现空指针异常,当然这里不会出现空指针异常,但是第一种写法可以避免空指针异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值