zoukankan      html  css  js  c++  java
  • unity设计模式-----建造者模式

    建造者模式(Builder Pattern): 
    将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

    作用: 在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。

    (1)用户只需要给出指定复杂对象的类型和内容

    (2)建造者模式负责按顺序创建复杂对象(把内容的建造过程和细节隐藏起来)

    解决问题:

    抽象工厂模式解决了"系列产品"的需求变化,而建造者模式解决的是"产品部分"的需要变化

    1>方便用户建造复杂的对象(不需要知道实现过程)

    2>代码复用性,封装性(将对象构造过程和细节进行封装&复用)

    产品(Product):产品类,规定了产品的组成部件。这里的产品是同一类产品。
    抽象建造者(Builder):为一个产品(Product)对象的各个部件提供了一个抽象接口
    具体建造者(ConcreteBuilder):实现Builder接口,根据具体的要求建造和装配各个部件
    指挥者(Director):用来指挥创建过程,直接和客户(Client)进行需求沟通,构建了一个使用builder接口的对象

    具体流程:

    1.指挥者(Director)和客户交流,获取客户需要什么产品

    2.指挥者交流后知道了产品需求,根据需求来决定产品部件的构造,统一分给各部门相应的建造者(Builder)

    3.各部门再安排给具体的生产小组(ConcreteBuilder),造出部件

    4.最终完成产品的生产,告诉老板(指挥者Director)做好了

    建造者模式优缺点:

    优点:

    (1)易于解耦:将产品本身与产品创建过程进行解耦,可以使用相同的创建过程来得到不同的产品,即细节依赖抽象

    (2)易于精确控制对象的创建:将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰

    (3)易于拓展:增加新的具体建造者无需修改原有类库的代码,易于拓展,符合"开闭原则"

    (4)综述:每一个具体建造者都相对独立,而与其他的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者,用户使用不同的具体建造者即可得到不同的产品对象

    缺点:

    (1)建造者模式所创建的产品一般具有较多的共同点,其组成部分相似;如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用的范围受到一定的限制

    (2)如果产品的内部变化复杂,可以会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大

    适用场景:

    (1)需要生成的产品对象有复杂的内部结构,这些产品对象具备共性

    (2)隔离复杂对象的创建和使用,并使得相同的创建不同的产品

  • 相关阅读:
    Openstack 通过 SQLAlchemy-ORM 访问数据库
    ulimit -c unlimited
    ajax 调用后台接口示例
    读书有什么用——北漂18年(番外篇三)
    zTree点击文字勾选复选框
    深度剖析 | 基于大数据架构的BI应用
    深度剖析 | 基于大数据架构的BI应用
    AngularJS之对话框
    AngularJS之依赖注入(实例一)
    AngularJS之$watch方法(监控动作)
  • 原文地址:https://www.cnblogs.com/qipei/p/10033346.html
Copyright © 2011-2022 走看看