设计模式——-建造者模式(生成器模式)

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

建造者模式中的4个角色:

Product产品类

通常是实现了模板方法模式,也就是有模板方法和基本方法。

Builder抽象建造者

规范产品的组建,一般是由子类实现。

ConcreteBuilder具体建造者

实现抽象类定义的所有方法,并且返回一个组建好的对象。

Director导演类

负责安排已有模块的顺序,然后告诉Builder开始建造。

下面这个例子就是需要根据不同的方法的调用前后进行对象实例的创建。

产品类:

父类(使用了模板方法模式):

子类1:

子类2:

Builder抽象建造者类

ConcreteBuilder具体建造者类

建造者1:

建造者2:

Director导演类:

通过导演类,为每个方法调用的顺序都创建一个独立的方法,再调用建造者类对方法进行实例化

导演类可以有多个,建造者类也可有多个。

建造者模式的优点:

1、封装性:使用建造者模式可以使客户端不必知道产品内部组成的细节,

2、建造者独立,容易扩展:每个不同类型的建造者都相互独立,对系统的扩展非常有利。

3、便于控制细节风险:由于具体的建造者是独立的,因此可以对建造者过程逐步细化,而不对其他的模块产生任何影响。

Original: https://www.cnblogs.com/maple92/p/6671030.html
Author: Topze
Title: 设计模式——-建造者模式(生成器模式)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582960/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • WEB安全信息收集

    每次做测试都要去网上找信息太费劲这里放了常用的所有工具和网站,后期有更新在改。 子域名&敏感信息 通过大量的信息收集,对目标进行全方位了解,从薄弱点入手。 利用Google…

    Linux 2023年6月7日
    056
  • Golang环境安装

    一、下载地址 Golang: Downloads – The Go Programming Language GoLand编辑器: Download GoLand: A…

    Linux 2023年6月13日
    072
  • Linux 基于flock命令实现多进程并发读写文件控制

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年9月10日
    0250
  • Linux基础命令之cat使用方法大全

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年8月20日
    0270
  • 设计模式-单例模式

    目的:为了保证一个类在程序中只有一个实例,并且能被全局访问 场景:全局线程池 要点: 通过 Test::Instance()获取类指针 class Test { public: s…

    Linux 2023年6月8日
    063
  • ubuntu安装redis

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年8月26日
    0254
  • Jenkins

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年10月12日
    0228
  • 线程

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年11月7日
    0149
  • 【前端小技巧】利用border画三角形及梯形

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年8月30日
    0293
  • 精通awk系列文章

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年8月26日
    0229
  • git 忽略已经被提交的文件

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年8月30日
    0249
  • Linux网络智障问题排查汇总

    Q: Linux 客户端应用接收不到组播:A: 检查客户端的 Linux 系统,可能没有配置 net.ipv4.conf.ethx.rp_filter = 0 的内核参数 Q: 在…

    Linux 2023年6月14日
    053
  • SpringBoot-shiro

    注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

    Linux 2022年11月8日
    0182
  • EXCEL中vlookup函数的使用

    =LOOKUP(“座”,INDIRECT(“A1:A”&MATCH(E3,B1:B14,))) 这个公式中还嵌套了INDIR…

    Linux 2023年6月13日
    057
  • WPF 已知问题 Popup 失焦后导致 ListBox 无法用 MouseWheel 滚动问题和解决方法

    本文记录在 Popup 失焦后导致 ListBox 无法用 MouseWheel 滚动问题 本文记录在 Popup 失焦后导致 ListBox 无法用 MouseWheel 滚动问…

    Linux 2023年6月6日
    083
  • Qt-Vnc远程

    VNC简介 VNC(Virtual Network Computing)是基于RFB(Remote Frame Buffer)协议的远程系统,C/S端口默认为5900,B/S端口默…

    Linux 2023年6月8日
    0452
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球