美文网首页
工厂方法模式

工厂方法模式

作者: 熊猫派 | 来源:发表于2019-01-24 17:07 被阅读0次

在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。

模式结构

1.AbstractProduct:抽象产品
2.ConcreteProduct具体产品
3.AbstractFactory抽象工厂
4.ConcreteFactory:具体工厂
UML:


FactoryMethod.jpg

抽象产品角色

public abstract class Product  {
    //所有产品类的公共业务方法
    public void methodSame() {
        //公共方法的实现
    }
    //声明抽象业务方法
    public abstract void methodDiff();
}

具体产品

//具体产品A
public class ConcreteProductA extends Product {
    // 产品A实现方法
    @Override
    public void methodDiff() {

    }
}
//具体产品B
public class ConcreteProductB extends Product {
    //产品B实现方法
    @Override
    public void methodDiff() {

    }
}

抽象工厂角色

//抽象工厂接口
public interface AbstractFactory {
    Product getProduct();
}

具体工厂角色

//A工厂
public class AFactory implements AbstractFactory {
    @Override
    public Product getProduct() {
        return new ConcreteProductA();
    }
}
//B工厂
public class BFatory implements AbstractFactory {
    @Override
    public Product getProduct() {
        return new ConcreteProductB();
    }
}

客户端引用

public class Main {
    public static void main(String[] args) {
        //A产品读取
        AbstractFactory abstractFactory = new AFactory();
        Product productA = abstractFactory.getProduct();
        productA.methodSame();
        productA.methodDiff();
        //B产品读取
        AbstractFactory factory = new BFactory();
        Product productB = factory.getProduct();
        productB.methodSame();
        productB.methodDiff();
    }
}

工厂模式优点

1.工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节
2.它能够使工厂可以自主确定创建何种产品对象,而如何创建这个对象的细节则完全封装在具体工厂内部。
3.在系统中加入新产品时,无须修改抽象工厂和抽象产品提供的接口,无须修改客户端,也无须修改其他的具体工厂和具体产品,而只要添加一个具体工厂和具体产品就可以了。这样,系统的可扩展性也就变得非常好,完全符合“开闭原则”。

工厂模式缺点

1.需要编写新的具体产品类,而且还要提供与之对应的具体工厂类,增加系统开销。
2.由于考虑到系统的可扩展性,需要引入抽象层,在客户端代码中均使用抽象层进行定义,增加了系统的抽象性和理解难度,且在实现时可能需要用到DOM、反射等技术,增加了系统的实现难度。

适用环境

1.客户端不需要知道它所创建的对象的类。例子中我们不知道产品具体叫什么名,只知道创建它的工厂名就完成了创建过程。
2.客户端可以通过子类来指定创建对应的对象。

相关文章

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

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

    1、工厂方法模式(Factory Method) 工厂方法模式分为三种: 普通工厂模式 多个工厂模式 静态工厂模式...

  • 设计模式 工厂模式

    工厂模式 工厂模式三大类1、简单工厂模式(静态工厂方法模式)2、工厂方法模式3、抽象工厂模式(Kit模式) 简单工...

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

    python 环境 工厂方法模式简介 工厂方法模式Factory Method,又称多态性工厂模式。在工厂方法模式...

  • 第一章2.0工厂- 基础类准备

    2.1工厂-简单工厂模式2.2工厂-工厂方法模式2.3工厂-抽象工厂模式

  • 建造模式

    包括:简单工厂、工厂方法、抽象工厂、单例模式、多例模式、建造模式、原始原型模式。 简单工厂:又名静态工厂方法模式,...

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

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

  • 设计模式学习--工厂方法模式

    模式定义 工厂方法模式又称工厂模式,也叫虚拟构造器模式或者多态工厂模式,它属于类创建型模式。在工厂方法模式中,工厂...

  • 五分钟精通设计模式(三)之工厂方法模式

    工厂方法模式分为三种: 普通工厂方法模式、多个工厂方法模式、静态工厂方法模式 废话不多说,下面直奔主题,实现步骤:...

网友评论

      本文标题:工厂方法模式

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