工厂方法模式

 

简单工厂模式的升级版--工厂方法模式
简单工厂模式:属于创建型模式,又叫静态工厂方法模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。
简单工厂类:
//简单面包工厂类
public class BreadFactory{
 public static BreadMaker MakeBread(int breadType){
           BreadMaker breakMaker=null;
          //选择面包类型
         switch( breadType){
              case 1:
                     breadMaker =new BlackBread();
                     break; 
              case 2:
                     breadMaker =new HoneyBread();
                     break; 
              default:
                break;
        }
       return breakMaker;
  }
}
 因为简单工厂模式违反了开放-封闭原则,所以对简单工厂模式进行升级成为了工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
//工厂接口
public interface IFactory{
   BreadMaker CreateBread();
}
不同的面包建立一个具体工厂方法来实现这个接口:
//黑面包的工厂方法实现
public class BlackBreadFactory implements IFactory{
     //覆盖父类抽象方法
    @Override
    public BreadMaker CreateBread(){
          return new BlackBread();
    }
}
//以下几个工厂省略
      可以说工厂方法模式是简单工厂模式的进一步抽象和推广,也可以说简单工厂模式是工厂方法模式的简化。对于多态性的进一步使用,工厂方法模式在保留简单工厂模式优点的同时,也克  服了它的缺点。工厂方法模式也有其缺点,每增加一个产品,就要相应地添加一个产品工厂类,增加了额外的开发量。

    对于是选择工厂方法模式和简单工厂模式,要取决于具体的应用。正如从两个模式的名称就可以看出,对于一些比较简单的应用,“产品”比较少时,使用简单工厂模式就可以满足要求。而对 于“产品”比较丰富的应用,过多的分支不利于程序的维护,这时应该选择工厂方法模式来降低程序的维护量。

 

转载于:https://www.cnblogs.com/fxbbk/p/6605896.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值