简易的设计模式——建造者模式
定义
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
四个角色
- 产品类(Product):有模板方法和基本方法。
- 抽象建造者(Builder):规范产品的组建,一般是由子类实现。
- 具体建造者(ConcreteBuilder):实现抽象类定义的所有方法,并返回一个组建好的对象。
- 导演类(Director):负责安排已有模块的顺序。
代码实现
产品类 Product.java
public class Product {
public void dosomething(){
//实现一些业务
}
}
抽象建造者 Builder.java
public abstract class Builder {
//设置不同的部分以获得不同的产品
public abstract void setPart();
//建造产品
public abstract Product buildProduct();
}
具体建造者 ConcreteBuilder.java
public class ConcreteBuilder extends Builder {
private Product product = new Product();
public void setPart(){
//产品内的逻辑处理
}
public Product buildProduct(){
return product;
}
}
导演 Director.java
public class Director {
private Builder builder = new ConcreteBuilder();
//构建不同的产品
public Product getAProduct(){
builder.setPart();
//生产不同的产品。
return builder.buildProduct();
}
}
建造者模式的优点
- 封装性:客户端不需要知道内部的组成细节。
- 建造者独立:容易扩展,不同类型的建造者相互独立,利于扩展。
- 便于控制细节风险:由于具体的建造者是独立,因此可以对建造过程逐步细化,而不对其他的模块产生影响。
使用场景
- 方法相同,执行的顺序不同,产生不同的事件结果时,可以采用的建造者模式。
- 多个部件装配到同一个对象中,但又希望产生的运行结果又不相同的时候。
- 产品类型非常复杂,或者产品类中得不同的顺序可以来带不同效果的时候。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?