美文网首页设计模式学习小结
设计模式小结-工厂方法模式

设计模式小结-工厂方法模式

作者: r09er | 来源:发表于2017-10-06 13:55 被阅读5次

工厂方法模式模式小结:

工厂方法模式是简单工厂模式的延伸,它继承了简单工厂模式的优点,同时还弥补了简单工厂模式的不足。

优点:

  • 1.工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节,用户只需要关心所需产品对应的工厂,无须关心创建细节,甚至无须知道具体产品类的类名。
  • 2.基于工厂角色和产品角色的多态性设计是工厂方法模式的关键。它能够让工厂可以自主确定创建何种产品对象,而如何创建这个对象的细节则完全封装在具体工厂内部。
  • 3.在系统中加入新产品时,无须修改抽象工厂和抽象产品提供的接口,无须修改客户端,也无须修改其他的具体工厂和具体产品,而只要添加一个具体工厂和具体产品就可以了。符合开闭原则
    缺点:
  • 1.在增加新产品的时候需要同时增加工厂类和产品类,会增加系统的类个数,一定程度上增加系统复杂度。
  • 2.要考虑系统的扩展性,所以会引入抽象层和,调用均通过抽象层调用,会增加系统的抽象性和理解难度。
  • 3.由于为了符合开闭原则,可能会引入DOM,反射,等技术,会增加实现难度。

适用场景

  • 1.客户端不需要知道调用的对象类,只需要知道对象所对应的工厂。
  • 2.抽象工厂对象通过其子类来指定生产的对象,抽象工厂对象只需提供一个创建产品的接口或抽象方法,具体实现由其子类来确定。

示例场景

有一款图片读取解析软件,读取各种不同类型的图片格式并解析,针对每一种图片格式都设计一个图片读取器,如GIF图片读取器用于读取GIF格式的图片、JPG图片读取器用于读取JPG格式的图片。

UML类图

示例代码

//图片接口
public interface Picture {
    //图片的解析方法,解析png,jpg,gif等图片
    void analysis();
}
//具体图像对象
public class JPGPicture implements Picture {
    @Override
    public void analysis() {
        System.out.println("解析JPG图片");
    }
}
//抽象的图片工厂方法
public abstract class PictureFactory {
    //读取图片方法
    public abstract Picture readPicture();

    public void analysisPicture(){
        Picture picture = this.readPicture();
        picture.analysis();
    }
}
//具体的图片工厂
public class JPGFactory extends PictureFactory{

    @Override
    public Picture readPicture() {
        System.out.println("读取jpg图片");
        return new JPGPicture();
    }
}
//客户端调用,使用读取XML配置,反射获取实现类的方式
 PictureFactory pictureFactory = (PictureFactory) XMLUtil.getBean();
        pictureFactory.analysisPicture();

相关文章

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

    工厂方法模式模式小结: 工厂方法模式是简单工厂模式的延伸,它继承了简单工厂模式的优点,同时还弥补了简单工厂模式的不...

  • 2021-11-16 - 学习记录

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

  • 工厂模式

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

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

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

  • 设计模式-工厂模式

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

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

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

  • spring 设计模式篇(前)

    设计模式俗称:套路 一、spring常见设计模式 (23种设计模式) 创建型:工厂方法模式、抽象工厂模式、建造者...

  • 设计模式系列-简单工厂模式

    JAVA设计模式系列: 单例模式 观察者模式 模板方法模式 简单工厂模式 定义 简单工厂模式又叫做静态工厂方法模式...

  • 简单工厂模式

    Android进阶之设计模式 简单工厂模式 简单工厂模式(又叫作静态工厂方法模式), 其属于创建型设计模式,但并不...

  • 设计模式之简单工厂、工厂方法、抽象工厂

    设计模式之简单工厂、工厂方法、抽象工厂 什么是设计模式? 设计模式(Design pattern)代表了最佳的实践...

网友评论

    本文标题:设计模式小结-工厂方法模式

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