一、大致构造
1、导演者类
2、建造抽象类
3、产品抽象类
4、产品具体类
5、建造具体类
二、代码(建造模式,相当于将一堆零件组装成一个对象)
1、建造抽象类
Builder.java
package com.builderModel; public interface Builder { public void BuildPart1(); public void BuildPart2(); public Product getProduct(); }
2、产品标识类
package com.builderModel; public interface Product { }
3、具体产品类
Article.java
package com.builderModel; public class Article implements Product { private String title; private String content; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } @Override public String toString() { return "Article [title=" + title + ", content=" + content + "]"; } }
AutoMessage.java
package com.builderModel; public class AutoMessage implements Product { private String from; private String content; public String getFrom() { return from; } public void setFrom(String from) { this.from = from; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } @Override public String toString() { return "Message [from=" + from + ", content=" + content + "]"; } }
4、具体产品构造者
ArticleBuilder.java
package com.builderModel; public class ArticleBuilder implements Builder { Article article = new Article(); @Override public void BuildPart1() { article.setTitle("hello"); } @Override public void BuildPart2() { article.setContent("world"); } @Override public Product getProduct() { return article; } }
AutoMessageBuilder.java
package com.builderModel; public class AutoMessageBuilder implements Builder { private AutoMessage message = new AutoMessage(); @Override public void BuildPart1() { message.setFrom("客户"); } @Override public void BuildPart2() { message.setContent("你的网页出错了"); } @Override public Product getProduct() { return message; } }
5、导演者类
Director.java
package com.builderModel; public class Director { private Builder builder = null; public Director(Builder builder) { this.builder = builder; this.builder.BuildPart1(); this.builder.BuildPart2(); } public Product getProduct() { return this.builder.getProduct(); } }
6、测试类
Test.java
package com.builderModel; public class Test { public static void main(String[] args) { Builder builder = new AutoMessageBuilder(); Director director = new Director(builder); AutoMessage autoMessage = (AutoMessage) director.getProduct(); System.out.println(autoMessage.toString()); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?