zoukankan      html  css  js  c++  java
  • 工厂模式

    工厂模式

    意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

    需要解决的问题:主要解决接口选择的问题。

    何时使用:我们明确地计划不同条件下创建不同实例时。

    如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。

    关键代码:创建过程在其子类执行。

    简单工厂模式

    简单工厂模式不是 23 种里的一种,简而言之,就是有一个专门生产某个产品的类。

    比如下图中的鼠标工厂,专业生产鼠标,给参数 0,生产戴尔鼠标,给参数 1,生产惠普鼠标。

    工厂模式

    工厂模式也就是鼠标工厂是个父类,有生产鼠标这个接口。

    戴尔鼠标工厂,惠普鼠标工厂继承它,可以分别生产戴尔鼠标,惠普鼠标。

    生产哪种鼠标不再由参数决定,而是创建鼠标工厂时,由戴尔鼠标工厂创建。

    后续直接调用鼠标工厂.生产鼠标()即可

    抽象工厂模式

    抽象工厂模式也就是不仅生产鼠标,同时生产键盘。

    也就是 PC 厂商是个父类,有生产鼠标,生产键盘两个接口。

    戴尔工厂,惠普工厂继承它,可以分别生产戴尔鼠标+戴尔键盘,和惠普鼠标+惠普键盘。

    创建工厂时,由戴尔工厂创建。

    后续工厂.生产鼠标()则生产戴尔鼠标,工厂.生产键盘()则生产戴尔键盘。

    设计时将Mouce 和 Keybo设计成接口,不同厂家的鼠标和键盘设计成实现。

    假设我们增加耳麦这个产品,则首先我们需要增加耳麦这个父类,再加上戴尔耳麦,惠普耳麦这两个子类。

    之后在PC厂商这个父类中,增加生产耳麦的接口。最后在戴尔工厂,惠普工厂这两个类中,分别实现生产戴尔耳麦,惠普耳麦的功能。

    以上内容转自:http://www.runoob.com/design-pattern/abstract-factory-pattern.html

  • 相关阅读:
    巨蟒python全栈开发-第11阶段 ansible_project4
    正则面试题
    正确的邮件发送格式?
    巨蟒python全栈开发-第11阶段 ansible_project3
    巨蟒python全栈开发-第11阶段 ansible_project2
    项目资源地址
    网络基础练习题
    巨蟒python全栈开发-第11阶段 ansible_project1
    数据库之单表查询
    数据的增删改
  • 原文地址:https://www.cnblogs.com/feng-ying/p/10655596.html
Copyright © 2011-2022 走看看