设计模式之-工厂方法模式

 

跟简单工厂模式一样同属于创建型模式,还被称为多态工厂模式。

工厂方法模式大致跟简单工厂模式差不多,具体不同表现在工厂方面,可以这样讲,工厂方法模式就是将工厂详细的分类了,抽象出一个工厂然后实现跟具体工厂里面生产的品牌有关,这样设计有什么好处呢,让我们来看下面的例子:

         同样以简单工厂的那个例子:

我们有电视,具体品牌有长虹电视,创维电视,这里的工厂跟简单工厂不同的是具体分类了,有工厂,具体实现是长虹电视工厂,创维电视工厂

电视:

public interface TV {

    public String getName();

}

 

长虹电视:

 

public class ChangHongTV implements TV{

 

    @Override

    public String getName() {

       // TODO Auto-generated method stub

       return "长虹电视";

    }

 

}

创维电视:

 

public class ChuangWeiTV implements TV{

 

    @Override

    public String getName() {

       // TODO Auto-generated method stub

       return "创维电视";

    }

 

}

电视工厂:

 

public  interface TVFactory {

       public  TV getTV();

}

 

 

 

长虹电视工厂:

 

public class ChangHongTVFactory implements TVFactory{

 

    @Override

    public TV getTV() {

      

       return new ChangHongTV();

    }

 

}

 

创维电视工厂:

 

 

public class ChuangWeiTVFactory implements TVFactory{

 

    @Override

    public TV getTV() {

      

       return new ChuangWeiTV();

    }

 

}

 

 

跟简单工厂有什么不同呢?

那么假如客户需要一个长虹电视的话我们可以直接找到生产长虹电视的工厂,拿出长虹电视,需要创维也一样,那么假如又多了一个品牌怎么办呢?如果在简单工厂中我们需要改变工厂的源代码,那样明显违背了OCP原则(开闭原则),如果是在工厂方法模式中就不会出现这样的问题啦,我们只需要再加一个新品牌的工厂,实现公有的工厂接口,那么就可以达到目地了,这样正符合了OCP原则,工厂方法模式是对简单工厂的一种进化

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值