建造者模式
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。将建造复杂对象的过程和组成对象的部件解耦。
包含如下几种角色:
Builder:抽象建造者(Builder
)
ConcreteBuilder:具体建造者(CommonBuilder
、SuperBuilder
)
Director:指挥者(Director
)
Product:产品角色(Role
)
1、定义角色类相关属性

/** * 定义角色类相关属性 * @author Tim * */ public class Role { private String head; private String face; private String body; public String getHead() { return head; } public void setHead(String head) { this.head = head; } public String getFace() { return face; } public void setFace(String face) { this.face = face; } public String getBody() { return body; } public void setBody(String body) { this.body = body; } @Override public String toString() { return this.head + "\t" + this.face + "\t" + this.body; } }
2、定义建造者

/** * 定义抽象构建方法 * @author Tim * */ public abstract class Builder { Role role = new Role(); public abstract void buildHead(); public abstract void buildFace(); public abstract void buildBody(); public Role getResult() { return role; } }
3、具体建造者二种实现

/** * 实现抽象构造类_1 * @author Tim * */ public class CommonBuilder extends Builder{ private Role role = new Role(); @Override public void buildHead() { role.setHead("common head building..."); } @Override public void buildFace() { role.setFace("common face building..."); } @Override public void buildBody() { role.setBody("common body building..."); } @Override public Role getResult() { return role; } }

/** * 抽象构建类实现_2 * @author Tim * */ public class SuperBuilder extends Builder{ private Role role = new Role(); @Override public void buildHead() { role.setHead("super head building..."); } @Override public void buildFace() { role.setFace("super face building..."); } @Override public void buildBody() { role.setBody("super body building..."); } @Override public Role getResult() { return role; } }
4、指挥者

/** * 定义构建过程方法 * @author Tim * */ public class Director { public void build(Builder builder) { builder.buildHead(); builder.buildFace(); builder.buildBody(); } }
5、测试

/** * 构建模式测试类 * @author Tim * */ public class BuilderMain { public static void main(String[] args) { Builder builder = new CommonBuilder(); Director director = new Director(); director.build(builder); System.out.println(builder.getResult()); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?