• 大战设计模式【5】—— 工厂方法模式


    工厂方法(Factory Method)模式

    设计模式使用的例子

    https://github.com/LinkinStars/DesignPatternsAllExample



     

    一、定义

    定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。
    工厂方法模式又简称为工厂模式,也可称为多态工厂模式,它是一种创建型模式。  

    二、结构

    Product(抽象产品):定义产品的接口,是工厂方法模式所创建的对象的超类,也就是产品对象的公共父类。
    ConcreteProduct(具体产品):它实现了抽象产品接口,某种类型的具体产品由专门的具体工厂创建,具体工厂和具体产品之间一一对应。
    Factory(抽象工厂):抽象工厂类,声明了工厂方法,用于返回一个产品。
    ConcreteFactory(具体工厂):抽象工厂的子类,实现了抽象工厂中定义的工厂方法,并可由客户端调用,返回一个具体产品类的实例。

    三、优点

    工厂方法用于创建客户所需要的产品,还向客户隐藏了哪种具体产品类将被实例化这一细节。
    因此,用户只需要关心所需产品对应的工厂,无须关心创建细节。
    在系统中加入新产品时,无需修改抽象工厂和抽象产品提供的接口,也无须修改客户端,还无须修改其他的具体工厂和具体产品,
    而只要加入一个具体工厂和具体产品就可以了。因此,系统的可扩展性得到了保证,符合开闭原则。

    四、缺点

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

    五、应用场景

    客户端不知道其所需要的对象的类。
    在工厂方法模式中,客户端不需要知道具体产品类的类名,只需要知道所对应的的工厂即可,具体的产品对象由具体工厂创建,
    可将具体工厂的类名存储到配置文件或数据库中。抽象工厂类通过其子类来指定创建哪个对象。

    六、个人总结

    1、用最白话的方式解释就是,工厂方法模式就是多个工厂的简单工厂模式。
    2、好处是,使用时,我们可以决定使用的是哪一个工厂生产什么样的产品,当然不同的工厂生产的产品是不同的。
    3、利用两个抽象的地方:
    一个是产品的抽象,保证具体的产品一定有你需要的方法;
    一个是工厂的抽象,保证具体的工厂能生产对应的产品;

     
    参考博客:http://www.cnblogs.com/edisonchou/p/6696903.html
  • 相关阅读:
    CDI Features
    Java Design Patterns
    pyautogui
    TCP/UDP的套接字Socket通信工作流程
    TCP连接的建立与释放(三次握手、四次挥手)
    python实现单例模式的三种方式及相关知识解释
    面向对象的三个基本特征
    网络编程
    初识python
    目录
  • 原文地址:https://www.cnblogs.com/linkstar/p/7667799.html
Copyright © 2020-2023  润新知