简易的设计模式——建造者模式

定义

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

四个角色

  • 产品类(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();
    }
}

建造者模式的优点

  • 封装性:客户端不需要知道内部的组成细节。
  • 建造者独立:容易扩展,不同类型的建造者相互独立,利于扩展。
  • 便于控制细节风险:由于具体的建造者是独立,因此可以对建造过程逐步细化,而不对其他的模块产生影响。

使用场景

  • 方法相同,执行的顺序不同,产生不同的事件结果时,可以采用的建造者模式。
  • 多个部件装配到同一个对象中,但又希望产生的运行结果又不相同的时候。
  • 产品类型非常复杂,或者产品类中得不同的顺序可以来带不同效果的时候。
posted @   whthomas  阅读(198)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示