美文网首页Java设计模式JAVA设计模式
设计模式-工厂模式二(工厂方法模式)

设计模式-工厂模式二(工厂方法模式)

作者: YannisChen_2017 | 来源:发表于2018-08-25 22:37 被阅读2次

基于第一章的简单工厂模式 我们会发现这个简单工厂有很大的限制。从现实生活上来看,太不专业了,你一个简单工厂可以创造任何牌子的牛奶。这在实际上也是行不通的。除非类似于拼夕夕那里的产品工厂。在真正的实际中,不同品牌的牛奶因为具体的制作工艺其他的相关原料等问题肯定不会是一个工厂来制造。

举个栗子

/**

* 工厂方法的本源,工厂接口

*奶企的常规操作,生成牛奶

*/

public interface IMilkFactory {
        IMilkcreateMilk();
}

蒙牛、伊利、三元分别有自己的工厂来实现生产牛奶的功能

public class MengniuFactoryimplements IMilkFactory {

    @Override
    public IMilkcreateMilk() {
      return new MengniuMilk();
    }
}

public class SanYuanFactoryimplements IMilkFactory {

    @Override
    public IMilkcreateMilk() {
      return new SanYuanMilk();
    }
}

public class YiLiFactoryimplements IMilkFactory {

    @Override
    public IMilkcreateMilk() {
      return new YiLiMilk();
    }
}

三个工厂已经创建完毕,并且已经实现了生成各自牛奶的功能

我们的具体测试类如下

public class FuncFactoryTest {

public static void main(String[] args) {
        IMilk mengNiu =new MengniuFactory().createMilk();
        IMilk yiLi =new YiLiFactory().createMilk();
        IMilk sanYuan =new SanYuanFactory().createMilk();
        System.out.println(mengNiu.createMilk());
        System.out.println(yiLi.createMilk());
        System.out.println(sanYuan.createMilk());
    }
}

类图如下:

image
特点
在以上实例里,通过定义一个抽象的核心工厂类,并定义创建产品对象的接口,创建具体产品实例的工作延迟到其工厂子类去完成。这样做的好处是核心类只关注工厂类的接口定义,而具体的产品实例交给具体的工厂子类去创建。当系统需要新增一个产品是,无需修改现有系统代码,只需要添加一个具体产品类和其对应的工厂子类,使系统的扩展性变得很好,符合面向对象编程的开闭原则。在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅负责给出具体工厂必须实现的接口,而不负责产品类被实例化这种细节,这使得工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。

缺点
我们的客户端自己来实现具体的工厂创建。假如某个具体产品类需要进行一定的修改,很可能需要修改对应的工厂类。

相关文章

  • 工厂模式

    工厂模式 就是工厂---生产-->产品 在设计模式中,分为 简单工厂模式, 工厂方法模式,抽象工厂模式. 工厂模式...

  • 设计模式四、抽象工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 抽象工厂模式 ...

  • 设计模式三、工厂模式

    系列传送门设计模式一、单例模式设计模式二、简单工厂模式设计模式三、工厂模式设计模式四、抽象工厂模式 工厂模式 在一...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

  • PHP-浅谈单例模式和工厂模式

    PHP中常用的设计模式有单例模式、工厂模式(简单工厂模式、工厂方法模式和抽象工厂方法模式)、适配模式、策略模式。 ...

  • 2021-11-16 - 学习记录

    设计模式学习:创建型:工厂(工厂方法,抽象工厂),建造者,单例,原型 设计模式:工厂模式 简单工厂 工厂方法 抽象工厂

  • 设计模式-创建型模式-工厂模式(工厂三兄弟)

    设计模式-创建型模式-工厂模式(工厂三兄弟)工厂模式分为简单工厂,工厂方法,抽象工厂。 简单工厂模式 一个接口,三...

  • 工厂模式-简单工厂模式、工厂方法模式、抽象工厂模式

    工厂模式 工厂模式是一种比较常见的创建型设计模式,分为简单工厂模式、工厂方法模式、抽象工厂模式 工厂模式旨在把对象...

  • Android设计模式:工厂设计模式

    目录 简单工厂模式工厂方法模式抽象工厂模式 简单工厂模式 简单工厂模式是所有工厂模式的基础,不属于23种设计模式范...

  • 设计模式之工厂方法模式(创建型)

    一、模式定义 工厂方法模式:又称工厂模式,也叫虚拟构造器模式,属于构建型设计模式,工厂方法模式是在简单工厂模式上进...

网友评论

    本文标题:设计模式-工厂模式二(工厂方法模式)

    本文链接:https://www.haomeiwen.com/subject/qukniftx.html