zoukankan      html  css  js  c++  java
  • 建造者模式

    1、什么是建造者模式

      官方:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

      个人理解:创建对象时,使用者提供决策,建造者来具体创建对象,一步一步创建对象。

      举个例子,我们要调用构造者造个房子,我要厨房,欧美风格,客厅,采用中式风格,构建者就会根据这些来构建属性风格,属性内容由调用者决定,构建的过程由建造者决定。最终获取的这个对象,是由决策者决定的,但制作的过程,决策者没必要知道。

      思考:其实我感觉“复杂”在这里,有点疑惑,复杂情况下使用,简单的为啥就不能用,简单的用工厂,复杂的用建造者,也许使用上,基本上是这种情况,但把这个概念放在建造者者描述里,感觉不太好,建造者的好处是其建造的过程,没必要被知道。

    2、建造者模式好处

      从上面的描述可以看出,在构建对象的时候,可以通过改变对象属性组件内容,获取我想要的对象,这个构建过程基本上不会变,我们就可以采用建造者模式。

    3、建造者模式结构

      建造者(Builder)模式的主要角色如下。

    1. 产品角色(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个零部件。
    2. 抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法 getResult()。
    3. 具体建造者(Concrete Builder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。
    4. 指挥者(Director):它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息。

    4、建造者模式与工厂模式区别

      工厂模式和建造者模式想要的都是一个结果对象

      他们的区别是这个对象里的属性组件。工厂模式,根据条件可以获取想要的的对象,这些对象属性都是相同的。建造者创建的对象,可以将属性抽象化,可以通过调整建造方式,改变里面的具体属性类型,得到想要的对象。工厂模式,仅仅创建对象,建造者模式,还要可以改变对象的属性组件。

    5、引用文章

    (1)、http://c.biancheng.net/view/1354.html

    (2)、https://www.runoob.com/design-pattern/builder-pattern.html

    (3)、https://www.cnblogs.com/xrq730/p/11344541.html

    作者:张九星
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    MySQL版本详解
    数据库安全[一]
    python itertools模块学习
    两列布局实例
    Linux 原始套接字抓包实例
    [转]Linux终端快捷键
    SQL中的LEFT JOIN 和 RIGHT JOIN 以及INNER JOIN
    twisted框架入门笔记(1)
    一个关于lambda的题目
    找出数组中仅仅一个出现两次的数
  • 原文地址:https://www.cnblogs.com/orchid9/p/14384865.html
Copyright © 2011-2022 走看看