当前位置: 首页 > news >正文

二十三种设计模式之建造者模式(类比汽车制造厂好理解一些)

目录

1. 设计模式的分类

2. 定义

3. 建造者模式通常包含以下几个角色

4. 示例代码

5. 建造者模式的主要优点


1. 设计模式的分类

创建型模式(五种):工厂方法模式、单例模式、抽象工厂模式、原型模式、建造者模式
结构型模式(七种):适配器模式、代理模式、装饰器模式、桥接模式、外观模式、享元模式、组合模式。
行为型模式(十一种):状态模式、模板方法模式、访问者模式、迭代子模式、责任链模式、备忘录模式、解释器模式、命令模式、中介者模式、观察者模式、策略模式。

2. 定义

建造者模式(Builder Pattern)是一种用来构建复杂对象的设计模式,它能够让你分步骤创建复杂对象,并允许你只通过必要的步骤来构建对象。建造者模式是创建型模式之一,它提供了一种创建对象的最佳方式。

为了大家更好理解,这里类比汽车制造厂,车辆的组装过程可以看作是建造者模式的应用。汽车的底盘、引擎、内饰等部件(组件)被逐步组装起来,形成一辆完整的汽车(产品)。不同的车型可能需要不同的组装步骤,但组装线(建造过程)保持一致。

像这样的类比还有:乐高积木、电脑组装等等。

3. 建造者模式通常包含以下几个角色

  • 产品(Product):需要构建的复杂对象。
  • 抽象建造者(Builder):创建一个Product对象的接口或抽象类,定义创建复杂对象的各个步骤。
  • 具体建造者(ConcreteBuilder):实现Builder接口,针对不同的商业逻辑创建产品对象。
  • 指挥者(Director):负责安排已有模块的顺序,然后告诉Builder开始建造。
  • 客户端(Client):客户端代码一般会使用Director来构建一个复杂的对象,并提供一个或多个Builder来创建特定类型的产品。

4. 示例代码

4.1 产品类

public class Product {private String partA;private String partB;public String getPartA() {return partA;}public void setPartA(String partA) {this.partA = partA;}public String getPartB() {return partB;}public void setPartB(String partB) {this.partB = partB;}@Overridepublic String toString() {return "Product{" +"partA='" + partA + '\'' +", partB='" + partB + '\'' +'}';}
}

4.2 抽象建造者

public interface Builder {void buildPartA();void buildPartB();Product getResult();
}

4.3 具体建造者

public class ConcreteBuilder implements Builder{private Product product;public ConcreteBuilder() {this.product = new Product();}@Overridepublic void buildPartA() {product.setPartA("PartA");}@Overridepublic void buildPartB() {product.setPartB("PartB");}@Overridepublic Product getResult() {return product;}
}

4.4 指挥者

public class Director {private Builder builder;public Director(Builder builder) {this.builder = builder;}public void construct() {builder.buildPartA();builder.buildPartB();}public Product getProduct() {return builder.getResult();}
}

4.5 客户端代码

public class Main {public static void main(String[] args) {Builder builder = new ConcreteBuilder();Director director = new Director(builder);director.construct();Product product = director.getProduct();System.out.println(product);}
}

4.6 运行结果

5. 建造者模式的主要优点

  1. 分离对象的构建和表示:建造者模式可以将对象的构建过程和表示分离,使得相同的构建过程可以创建不同的表示。
  2. 相同的构建过程可以创建不同的产品:通过不同的建造者,可以使用相同的构建过程创建不同的产品。
  3. 更复杂的对象构建:可以逐步构建复杂对象,每一步都允许你只添加你所需要的部分。

http://www.lryc.cn/news/436310.html

相关文章:

  • macos 系统文件操作时提示 Read-only file system 解决方法
  • 银行业务架构指导应用架构规划及设计方法
  • 最全面IO流介绍
  • fastadmin 文件上传腾讯云
  • 《机器学习》—— PCA降维
  • 植物三萜皂苷生物合成途径及调控机制研究进展-文献精读48
  • server 2016搭建FTP服务
  • 物理学基础精解【4】
  • 【区块链 + 人才服务】Blockchain Workshop- 区块链编程实践平台 | FISCO BCOS应用案例
  • Java面试篇基础部分-Java中常用的I/O模型
  • 如何使用python运行Flask开发框架并实现无公网IP远程访问
  • 第三届828 B2B企业节开幕,大腾智能携手华为云共谱数字化新篇章
  • Linux网络编程IO管理
  • SpringCloud集成ELK
  • 【卷起来】VUE3.0教程-06-组件详解
  • JS Web
  • 【Linux】传输层协议——UDP
  • 算法学习攻略总结 : 入门至进阶,通关之路指南
  • 《卷积神经网络 CNN 原理探秘》
  • C#获取计算机信息
  • 派遣函数 - 通过设备链接打开设备
  • Vue 2 中的 `$set` 方法详解
  • 掌握Hive函数[2]:从基础到高级应用
  • 水壶问题记录
  • spring综合性利用工具-SpringBootVul-GUI(五)
  • 2024年9月12日(k8s环境及测试 常用命令)
  • 卫生间漏水原因很多,切莫病急乱投医
  • IEEE 802.11a OFDM系统的仿真(续)
  • Linux cut命令详解使用:掌握高效文本切割
  • c++11新特性——endable_shared_from_this