设计模式之建造者模式
2023-04-18 13:12:48 时间
建造者模式
定义:生成器模式是一种创建型设计模式, 使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。
如果你有一个需求:
你需要建造一座豪华别墅,需要安装泳池、暖气、和田玉地板、供电、宽带等。
方案一
- 按最简单的思路来,你可以在规划别墅时把可能所需的条件准备妥当(在类中加入所需属性),建造即可(通过构造方法创建一个对象,将所需条件放入构造方法),这样做可以满足需求,显然有一个弊端便是:构造方法代码量高,且可能会出现很多属性为Null的情况。
方案二
- 你可以创建一个House父类,在此基础上,根据客户的需求再创建其子类。这样做的缺点是:代码过于复杂。
建造者模式解决方案
将对象构造代码从产品类中抽取出来, 并将其放在一个名为生成器的独立对象中。
建造者的角色
生成器 (Builder)
接口声明在所有类型生成器中通用的产品构造步骤。
具体生成器 (Concrete Builders)
提供构造过程的不同实现。 具体生成器也可以构造不遵循通用接口的产品。
产品 (Products)
最终生成的复杂对象(为客户定做的别墅)。这些产品类并不一定有共同的接口,完全可以是不相关联的。
主管 (Director)
定义调用构造步骤的顺序, 这样你就可以创建和复用特定的产品配置。
客户端 (Client)
必须将某个生成器对象与主管类关联。(主管知道需要哪些创建步骤才能获取正常使用的产品) 一般情况下, 你只需通过主管类构造函数的参数进行一次性关联即可。 此后主 管类就能使用生成器对象完成后续所有的构造任务。 但在客户端将生成器对象传递给主管类制造方法时还有另一方式。 在这种情况下, 你在使用主管类生产产品时每次都可以使用不同的生成器。
talk is cheaper,show me your code.
分步制造汽车,生成器模式允许你分步骤地制造不同型号的汽车。
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击