2024.11.10

构建者模式(Builder Pattern)是一种创建型设计模式,它提供了一种分步骤构建复杂对象的方法。这种模式允许你通过指定复杂对象的类型和内容,逐步构造对象,并且可以控制对象的构造过程。构建者模式的主要优点是它能够将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。

构建者模式的主要组件包括:

  1. Product(产品角色):一个包含多个组件的复杂对象。
  2. Builder(抽象构建者):一个包含创建产品的方法的接口,这些方法返回一个产品类型的对象。
  3. ConcreteBuilder(具体构建者):实现Builder接口的具体类,它们返回一个具体产品类的对象。
  4. Director(指挥者):一个负责安排构建过程的类,它接受一个Builder对象,并在内部持有这个对象。指挥者使用这个Builder对象来创建复杂对象的步骤。
  5. Client(客户):一个使用指挥者和构建者来创建复杂对象的类。

构建者模式的典型代码实现如下:

// 产品类 public class Product { private List<String> parts; public void add(String part) { parts.add(part); } public void show() { System.out.println("Product Parts---------------------"); for (String part : parts) { System.out.println(part); } } } // 抽象构建者 public interface Builder { void buildPartA(); void buildPartB(); Product getResult(); } // 具体构建者 public class ConcreteBuilder implements Builder { private Product product; public ConcreteBuilder() { this.product = new Product(); } public void buildPartA() { product.add("PartA"); } public void buildPartB() { product.add("PartB"); } public Product getResult() { return product; } } // 指挥者 public class Director { private Builder builder; public Director(Builder builder) { this.builder = builder; } public void construct() { builder.buildPartA(); builder.buildPartB(); } } // 客户端代码 public class Client { public static void main(String[] args) { Director director = new Director(new ConcreteBuilder()); director.construct(); Product product = director.getBuilder().getResult(); product.show(); } }

在这个例子中,Product 是一个包含多个组件的产品,Builder 是一个抽象构建者接口,ConcreteBuilder 是具体的构建者实现,Director 是指挥者,它指导构建过程,Client 是客户端代码,它使用指挥者和构建者来创建产品。

构建者模式非常适合于那些需要创建复杂对象的场景,尤其是当这些对象的创建步骤很多,或者创建过程可能会变化时。使用构建者模式可以提高代码的灵活性和可维护性。


__EOF__

本文作者258333
本文链接https://www.cnblogs.com/258-333/p/18538754.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   258333  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示