设计模式之Builder
2024-10-01 07:05:31
设计模式总共有23种模式这仅仅是为了一个目的:解耦+解耦+解耦...(高内聚低耦合满足开闭原则)
介绍:
Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象。
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
模式结构:
首先我们看一下Builder的代码:
public interface Builder { //创建部件A 比如创建汽车车轮
void buildPartA();
//创建部件B 比如创建汽车方向盘
void buildPartB();
//创建部件C 比如创建汽车发动机
void buildPartC(); //返回最后组装成品结果 (返回最后装配好的汽车)
//成品的组装过程不在这里进行,而是转移到下面的Director类中进行.
//从而实现了解耦过程和部件
Product getResult(); }
接下来我们看一下指挥长Director。
public class Director { private Builder builder; public Director( Builder builder ) {
this.builder = builder;
}
// 将部件partA partB partC最后组成复杂对象
//这里是将车轮 方向盘和发动机组装成汽车的过程
public void construct() {
builder.buildPartA();
builder.buildPartB();
builder.buildPartC(); } }
然后就是具体Builder
public class ConcreteBuilder implements Builder { Part partA, partB, partC;
public void buildPartA() {
//这里是具体如何构建partA的代码 };
public void buildPartB() {
//这里是具体如何构建partB的代码
};
public void buildPartC() {
//这里是具体如何构建partB的代码
};
public Product getResult() {
//返回最后组装成品结果
};
}
这样一来我们在客户端代码中只需:
ConcreteBuilder builder = new ConcreteBuilder();
Director director = new Director(builder);
director.construct();
Product product = builder.getResult();
Builder相关比较简单,如果有复杂的对象要创建时可以适用次模式,你也可以通过Director控制复杂对象的组成元素,例如邮件(包含附件,主题,内容...)
最新文章
- winform 异步读取数据 小实例
- C++的那些事:你真的了解引用吗
- (转) Deep Learning in a Nutshell: Reinforcement Learning
- SQLServer数据库字典维护方法
- LINUX HOOK
- 【原则】常用windows开发 客户端工具 收集
- C文件函数总结
- linux awk命令详解【转载】
- [原创]linux简单之美(二)
- List<;string>; to List<;decimal>; by C# 2.0
- Log4j NDC MDC
- number问题
- UVW源码漫谈(三)
- 分贝块---dBblock
- c/c++/java如何访问数据库(优秀博文)
- 494. Target Sum
- Python 数据结构--查找
- Java SSM框架之MyBatis3(八)MyBatis之动态SQL
- 当Java遇到XML 的邂逅+dom4j
- mysql 数据操作 单表查询 group by 介绍
热门文章
- seaj和requirejs模块化的简单案例
- 《Effective C#》快速笔记(二)- .NET 资源托管
- 基于c++的ostu算法的实现
- springboot2.0 快速集成kafka
- [HDU4532]湫秋系列故事——安排座位
- [LOJ #6433]「PKUSC2018」最大前缀和
- [JXOI2017]颜色 线段树扫描线 + 单调栈
- POJ1523:SPF——题解
- BZOJ5288 &; 洛谷4436 &; LOJ2508:[HNOI/AHOI2018]游戏——题解
- 洛谷 P2258 子矩阵 解题报告