当前位置:网站首页>建造者模式
建造者模式
2022-06-25 11:09:00 【tlqwanttolearnit】
建造者模式(Builder Pattern)又叫生成器模式,有点类似工厂模式,两者都是用专门的类来实现对象的创建。
- 工厂模式用来创建一系列相关类型但不同的对象。
- 建造者模式则用来创建一种类型的复杂对象,通过设置不同的可选参数,定制化创建不同对象。
主要区别是建造者模式着重一步步构造一个复杂对象,而抽象工厂模式着重于多个系列的产品对象。
为什么使用建造者模式
- 一个类有很多属性,构造函数和参数过于长。
- 属性之间有一定的依赖和约束关系。
- 对象的创建需要遵循一定的顺序或者步骤
有一句话对建造者模式总结的很好:
当我们想要创建一个由多个部分构成的对象,而且他们的构建需要一步接一步的地完成,只有当各个部分都创建好,这个对象才算完整。
这正是 建造者设计模式的用武之地。
建造者模式的优缺点
优点
- 建造者独立,易扩展。
- 便于控制细节风险。
- 将对象的构造与表现解耦
缺点
- 产品必须有共同点,范围有限制。
- 如果内部变化复杂,会有很多的建造类。
建造者模式的构成
- 实际对象:实际要返回的对象
- 建造者抽象类:定义建造者实体类需要实现的功能。
- 建造者实体类:继承建造者抽象类,具体实现抽象类方法。
- 指挥者类:
边栏推荐
- Is it safe for Guosen Securities to open a securities account
- Kingbasees plug-in ftutilx of Jincang database
- GaussDB 如何统计用户sql的响应时间
- Jincang database kingbasees plug-in force_ view
- 仿真与烧录程序有哪几种方式?(包含常用工具与使用方式)
- 基于SSH的高校实验室物品管理信息系统的设计与实现 论文文档+项目源码及数据库文件
- Handling of NPM I installation problems
- Kingbasees plug-in DBMS of Jincang database_ RANDOM
- Double buffer transparent encryption and decryption driven course paper + project source code based on minifilter framework
- MySQL and Oracle processing CLOB and blob fields
猜你喜欢

基于Minifilter框架的双缓冲透明加解密驱动 课程论文+项目源码

TASK03|概率论

网易开源的分布式存储系统 Curve 正式成为 CNCF 沙箱项目

Query method and interrupt method to realize USART communication

C disk uses 100% cleaning method

基於Minifilter框架的雙緩沖透明加解密驅動 課程論文+項目源碼

Compilation of learning from Wang Shuang (1)

Sign up to open the third session of the "flying oar hacker marathon". It's been a long time

Writing wechat applet with uni app

Technical practice and development trend of video conference all in one machine
随机推荐
【文件包含漏洞-04】经典面试题:已知某网站仅存在本地文件包含漏洞时,如何GetShell?
Writing wechat applet with uni app
子类A继承父类B, A a = new A(); 则父类B构造函数、父类B静态代码块、父类B非静态代码块、子类A构造函数、子类A静态代码块、子类A非静态代码块 执行的先后顺序是?
基于OpenStreetMap+PostGIS的地理位置系统 论文文档+参考论文文献+项目源码及数据库文件
ARM64汇编的函数有那些需要注意?
GC
金仓数据库 KingbaseES 插件DBMS_RANDOM
杭州/北京内推 | 阿里达摩院招聘视觉生成方向学术实习生(人才计划)
Garbage collection mechanism
Software testing to avoid being dismissed during the probation period
Big Endian 和 Little Endian
A random number generator
[维护集群案例集] GaussDB 查询用户空间使用情况
Use of three-level linkage plug-ins selected by provinces and cities
Handling of NPM I installation problems
10.1. Oracle constraint deferred, not deferred, initially deferred and initially deferred
報名開啟|飛槳黑客馬拉松第三期如約而至,久等啦
1-7snapshots and clones in VMWare
【上云精品】节能提效!加速纺织业“智造”转型
Comparator(用于Arrays.sort)