• java设计模式-建造者模式


    概念:使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

    意图:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。

    主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。

    何时使用:一些基本部件不会变,而其组合经常变化的时候。

    如何解决:将不改变的部分剥离出来(就是导演者)

    优点: 1、建造者独立,易扩展。 2、便于控制细节风险。

    缺点: 1、产品必须有共同点,范围有限制。 2、如内部变化复杂,会有很多的建造类。

    使用场景: 

    1 需要生成的产品对象的属性或者方法相互依赖,需要指定其生成顺序,而其生成顺序一般固定.

    2 对象的创建过程,独立于该对象所在类

    与工厂模式区别:

    工厂模式只关心创建出这个对象,只需要new 出类的对象就行,不关心这个对象的组成部分。建造者模式则关心产品的细节(产品有很多不同方法,方法的不同执行顺序,创建出不同的产品),其导演者持有产品方法的执行顺序。

    简单来说,工厂方法关注整体(产品这一个整体),建造者方法关注细节(依赖产品的各个部件按顺序一步步组装出产品)

     建造者模式主要包含四个角色

    Product(产品角色): 一个具体的产品对象。

    Builder(抽象建造者): 创建一个Product对象的各个部件指定的抽象接口。

    ConcreteBuilder(具体建造者): 实现抽象接口,构建和装配各个部件。

    Director(指挥者): 构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象。它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程。

    实例如下:(创造不同的机器人)

    新建一个产品类 人

    //抽象创建者

    //具体创建者

    指挥者类的作用:构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象。它主要有两个作用,一是:隔离了客户与对象的生产过程(动态传入buidMan,生产不同类型机器人),二是:负责控制产品对象的生产过程(createHumanByDirector()方法负责生产的过程步骤)。

    //测试代码

    End

  • 相关阅读:
    cuda9.0 中不存在libnppi.so
    深度学习训练踩坑记
    采用代理之后,pip 运行报错socks
    摄像机模型
    段错误:使用opencv打开视频流
    ffmpeg+cuda+opencv
    pip install xxx -i https://pypi.tuna.tsinghua.edu.cn/simple
    【TCP/IP详解】BOOTP:引导程序协议
    【TCP/IP详解】TFTP:简单文件传送协议
    【TCP/IP详解】IGMP Internet组管理协议
  • 原文地址:https://www.cnblogs.com/hup666/p/10513957.html
Copyright © 2020-2023  润新知