设计模式学习(九):Builder
说明:由于本人是一个初学者,所以博客中用到的一些见解、图片、代码或者说明可能引用网络上面的资源,如果涉及到了侵权的问题请大家联系我进行删除。
Builder(构造器)模式也是对象创建模式中的一个,也是不是很常用的一个模式。
动机
在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。
如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法“不随着需求改变而改变?
模式定义
将一个复杂对象的创建与其表示相分离,使得同样的构建过程(稳定)可以创建不同的表示(变化)。
举例
用建造者(Builder)模式描述客厅装修。
分析:客厅装修是一个复杂的过程,它包含墙体的装修、电视机的选择、沙发的购买与布局等。客户把装修要求告诉项目经理,项目经理指挥装修工人一步步装修,最后完成整个客厅的装修与布局,所以本实例用建造者模式实现比较适合。
这里客厅是产品,包括墙、电视和沙发等组成部分。具体装修工人是具体建造者,他们负责装修与墙、电视和沙发的布局。项目经理是指挥者,他负责指挥装修工人进行装修。
本例的结构图如下:
从图片中我们不难看出上面的四个类都是相对稳定的部分,下面的两个具体实现类都是变化的部分。
要点总结
Builder模式主要用于”分步骤构建一个复杂的对象“。在这其中”分步骤“是一个稳定的算法,而复杂对象的各个部分则经常变化。
变化点在哪里封装哪里——Builder模式主要在于应对”复杂对象各个部分“的频繁需求变动。其缺点在于难以应对”分步骤构建算法“的需求变动。
在Builder模式中,要注意不同语言中构造器内调用虚函数的差别(C++,Java,C#)。
设计模式学习(九):Builder相关推荐
- 设计模式学习笔记清单
设计模式学习笔记清单 关于设计模式许多人已经耳熟能详,这段时间结合李建忠的教学视频以及大量网络资料,把这部分过了一遍,整理出学习笔记,而真正的深入学习和理解只能在具体的开发环境中日积月累. ...
- 设计模式学习(十一):Builder建造者模式
一.什么是Builder模式 大都市中林立着许多高楼大厦,这些高楼大厦都是具有建筑结构的大型建筑.通常,建造和构建这种具有建筑结构的大型物体在英文中称为Build. 在建造大楼时,需要先打牢地基,搭建 ...
- Builder (建造者) — 【面向对象设计模式学习】
Builder (建造者) - [面向对象设计模式学习] By CityWalker 2010年3月19日 Intent Separate the construction of a complex ...
- 设计模式学习笔记——建造者(Builder)模式
设计模式学习笔记--建造者(Builder)模式 @(设计模式)[设计模式, 建造者模式, builder] 设计模式学习笔记建造者Builder模式 基本介绍 建造者案例 类图 实现代码 Build ...
- 九大常用设计模式学习-装饰者模式
设计模式学习记录:一句话+代码体会设计模式. 九大常用设计模式 单例模式:https://blog.csdn.net/qq_37902949/article/details/87903569 简单工厂 ...
- 设计模式学习(四):基于Builder模式的歌词解析器
一.前言 上篇文章(设计模式学习(三):生成器(Builder)模式)记录了 Builder 模式的具体内容,这次使用C语言来实现一个实际的例子--基于Builder模式的歌词解析器. 本文的示例来自 ...
- 设计模式学习笔记(C++实现)(九)--组合模式
1.组合模式简介 英文名称 Composite 主要目的 该模式将对象组合成树形结构已表示"部分-整体"的层次结构,使得用户对单个对象和组合对象的使用具有一致性. 使用场景 1.当 ...
- 步步为营 .NET 设计模式学习笔记系列总结
设计模式我从开篇到23种设计模式的讲解总共花了进两个月的时间,其间有很多读者给我提出了很好的建议,同时也指出了我的不足,对此我表示感谢,正是由于很多读者的支持我才能坚持的写到最后.在此表示我真诚的谢意 ...
- 设计模式学习笔记——装饰(Decorator)模式
设计模式学习笔记--装饰(Decorator)模式 @(设计模式)[设计模式, 装饰模式, decorator] 设计模式学习笔记装饰Decorator模式 基本介绍 装饰案例 类图 实现代码 Dis ...
- 设计模式学习笔记——抽象工厂(Abstract Factory)模式
设计模式学习笔记--抽象工厂(Abstract Factory)模式 @(设计模式)[设计模式, 设计模式中文名, 设计模式英文名] 设计模式学习笔记抽象工厂Abstract Factory模式 基本 ...
最新文章
- robo3t 连接服务器数据库_车牌识别软件连接各种数据库方法大全
- Blender中的Python脚本介绍学习教程
- Hbase完全分布式的搭建
- oracle 查重复_日常答疑|MySQL删除重复数据踩过得坑
- python绘制柱形图-Python openpyxl Excel绘制柱形图
- mysql 数据库优化之执行计划(explain)简析
- 数据为桥迈向智能,渤海财险数据架构智能化演进
- python中metaclass的理解
- C# WinForm 文件上传下载
- python访问字符串中的部分字符的操作_python中字符串的常见操作方法
- 为什么root下不能使用passwd命令_Linux:CentOS 7中常用的基础命令
- PhpStorm 配置 Git 教程
- Windows系统以及office等一键激活
- 2021牛客多校10F Train Wreck (贪心,思维题)
- html display none取消,将displaynone取消
- set的用法及短语_set的用法和短语例句
- 找不到www.jetbrains.com的服务器IP地址
- 每日安全文章【1122】
- 视频怎么水平翻转画面并做锐化处理?
- 断言(assertion)的简介
热门文章
- 养QQ宠物不花Q币?完全可以!(转)
- iphone UINavigationController使用的一些技巧
- 菲尔兹奖得主埃菲 · 杰曼诺夫全职加入南科大,任职讲席教授
- 江苏省南通中学2021高考成绩查询,南通中学排名前十名,2021年南通中学排名一览表...
- openwrt修改生成BIN文件大小以用于8M FLASH(WR703N)
- Java实现零钱通功能
- Java如何创建项目
- C# 用QQ企业邮箱发邮件
- NCR(numeric character reference)字符转换成真实字符
- 实验 详解K8S多节点部署群集