zoukankan      html  css  js  c++  java
  • 工厂模式(factory pattern) ------创造型模式

    创建型模式

    简单工厂模式的缺点是:

    当我们引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,需要修改工厂类的方法,违反了“开闭原则”。

    工厂模式提供了一个抽象工厂接口来声明抽象工厂方法,而由其子类来具体实现工厂方法,创建具体的产品对象。

    包含的四个角色:

    1、Product(抽象产品):它是定义产品的接口,是工厂方法模式所创建对象的超类行,也是产品对象的公共父类;

    2、ConcreteProduct(具体产品):它实现了抽象产品接口,某种类型的具体产品由专门的具体工厂创建,具体工厂和具体产品之间一一对应;

    3、Factory(抽象工厂):在抽象工厂类中,声明了工厂方法(Factory Method),用于返回一个产品。抽象工厂时工厂方法模式的核心,所有创建对象的工厂类都必须实现该接口;

    4、ConcreteFactory(具体工厂):它是抽象工厂类的子类,实现了抽象工厂中定义的工厂方法,并可由客户端调用,返回一个具体产品类的实例。

    主要优点:

    1、工厂模式中工厂方法用来创建客户端所需的产品,隐藏细节,甚至无需知道具体产品类的类名;

    2、基于工厂角色和产品角色的多态性设计是工厂方法模式的关键。它能让工厂可以自主确定创建何种产品,而创建对象的细节则封装在工厂的内部;

    3、加入新产品时无须修改抽象工厂和抽象产品提供的接口,无需修改客户端,也无需修改其它的具体工厂和具体产品,只要添加一个具体工厂和具体产品,符合“开闭原则”

    主要缺点:添加新产品时需要编写新的产品类,而且还要提供与之对应的具体工厂类,系统中类的个数将成对增加,在一定程度上增加了系统的复杂度。

  • 相关阅读:
    Redis数据结构之字典
    多路复用
    Redis数据结构之SDS
    记一个图片转换神器vectorizer
    Java基础之面向对象上
    科学
    Linux内核源码分析之setup_arch (二)
    Linux内核源码分析之setup_arch (一)
    printk 流程分析
    多个线程顺序打印问题,一网打尽
  • 原文地址:https://www.cnblogs.com/openix/p/3170266.html
Copyright © 2011-2022 走看看