美文网首页
工厂方法模式(Factory Method Pattern)

工厂方法模式(Factory Method Pattern)

作者: Gabriella0629 | 来源:发表于2017-09-12 18:39 被阅读0次

    首页:设计模式
    上篇: 简单工厂

    模式动机

    生产一个特殊的女朋友礼物和衣服 ,分别需要一个抽象模版和一个知名的 工厂生产,比简单工厂更加简洁

    模式定义

    工厂方法模式(Factory Method Pattern)又称为工厂模式,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。

    模式结构

    • Product:抽象产品
    • ConcreteProduct:具体产品
    • Factory:抽象工厂
    • ConcreteFactory:具体工厂

    优点

    使用工厂方法模式的另一个优点是在系统中加入新产品时,无须修改抽象工厂和抽象产品提供的接口,无须修改客户端,也无须修改其他的具体工厂和具体产品,而只要添加一个具体工厂和具体产品就可以了。这样,系统的可扩展性也就变得非常好,完全符合“开闭原则”。

    缺点

    在添加新产品时,需要编写新的具体产品类,而且还要提供与之对应的具体工厂类,系统中类的个数将成对增加,在一定程度上增加了系统的复杂度,有更多的类需要编译和运行,会给系统带来一些额外的开销。

    适用环境

    客户端在使用时可以无须关心是哪一个工厂子类创建产品子类,需要时再动态指定,可将具体工厂类的类名存储在配置文件或数据库中。

    模式扩展

    1、使用多个工厂方法:在抽象工厂角色中可以定义多个工厂方法,从而使具体工厂角色实现这些不同的工厂方法,这些方法可以包含不同的业务逻辑,以满足对不同的产品对象的需求。
    2、产品对象的重复使用:工厂对象将已经创建过的产品保存到一个集合(如数组、List等)中,然后根据客户对产品的请求,对集合进行查询。如果有满足要求的产品对象,就直接将该产品返回客户端;如果集合中没有这样的产品对象,那么就创建一个新的满足要求的产品对象,然后将这个对象在增加到集合中。

    下篇:抽象工厂模式

    感谢:
    https://design-patterns.readthedocs.io/zh_CN/latest/behavioral_patterns/behavioral.html

    http://www.runoob.com/design-pattern/design-pattern-intro.html

    相关文章

      网友评论

          本文标题:工厂方法模式(Factory Method Pattern)

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