建造者模式
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
宽泛的讲:如果你需要将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示(客户端需要一个胖小人,具体怎么画靠我们自己去实现,客户端不需要知道)。如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到他们,而具体建造的过程和细节就不需要知道。
场景:主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。建造者模式的好处就是是建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以需要改变一个产品的内部表示,在一定一个具体的建造者就可以。
产品类:
//产品类,由多个部件组成 public class Product { List<String> parts = new ArrayList<>(); public void add(String part){ parts.add(part); } public void show(){ for (String part:parts) { System.out.println(part); } } }
抽象建造者类:
public abstract class Builder { public abstract void buildPartA(); public abstract void buildPartB(); public abstract Product getResult(); }
具体的建造者:
public class ConcreteBuilder1 extends Builder{ private Product product = new Product(); @Override public void buildPartA() { product.add("部件A"); } @Override public void buildPartB() { product.add("部件B"); } @Override public Product getResult() { return product; } }
指挥者类:
public class Director { public void Construct(Builder builder){ builder.buildPartA(); builder.buildPartB(); } }
Main:
public class Main { public static void main(String[] args) { Director director = new Director(); Builder builder1 = new ConcreteBuilder1(); director.Construct(builder1); Product product = builder1.getResult(); product.show(); } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~