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

设计模式-构建者

构建者是一种用于创建对象时将对象的构建过程和表示分离的设计模式,适用于构造过程复杂的对象和创建需要多种变化的场景使用.

例如一个汽车是一个抽象概念,车会具体到很多种,不同的发动机,车身,轮胎等等构建一个具体的车,所以这个具体对象创建有很多种可能.因此可以使用构建者设计模式

代码示例:

public class Car{

  private Engine engine; //发动机

  private Tire tire;  //轮胎

  private Body body; //车身

//私有化构造方法,让外部无法创建对象

 private Car(Builer builder){

  this.engine = builder.engine;

  this.tire = builder.tire;

  this.body = builder.body;

}

//构建者内部类

public static class Builder{

    private Engine engine; //发动机

     private Tire tire;  //轮胎

    private Body body; //车身

  public Builder setEngine(Engine engine){

     this.engine = engine;

     return this;

}

  public Builder setTire(Tire tire){

     this.tire= tire;

     return this;

}

  public Builder setBody(Body body){

     this.body= body;

     return this;

}

public Car build(){

  return new Car(this);

}

        Car car = new Car.Builder()
                .setEngine(new Engine("V8"))
                .setTire(new Tire("20 inch"))
                .setBody(new Body("Sedan"))
                .build();

优点:构建者能够让构建过程更加清晰明了

         调用者不知道内部的构建细节

         可以写多个构建者,用不同的方式构建同样的对象

         新的构建者不影响已有的代码,符合开闭原则

缺点:增加了代码量

        简单的对象创建用不到,强行使用会导致大量的构建者让代码复杂

       构建者创建的对象如果没有set方法,就不能修改了.


http://www.kler.cn/a/385857.html

相关文章:

  • 超全超详细使用SAM进行高效图像分割标注(GPU加速推理)
  • MacOS下,如何在Safari浏览器中打开或关闭页面中的图片文字翻译功能
  • 一个win32 / WTL下多线程库(CThread类)的使用心得
  • 工作时发现自己手写SQL能力很低,特此再来学习一遍SQL
  • Electron 沙盒模式与预加载脚本:保障桌面应用安全的关键机制
  • 进程信号
  • IO作业day4
  • redis:list列表命令和内部编码
  • jenkins使用slave节点进行node打包报错问题处理
  • 【JAVA毕业设计】基于Vue和SpringBoot的技术交流分享平台
  • C++ 游戏开发:打造高效、性能优越的游戏世界
  • 【观察】华为持续投入开源开放“结硕果”,openEuler走出操作系统“创新路”...
  • 怎么对 PDF 添加权限密码或者修改密码-免费软件分享
  • .NET中通过C#实现Excel与DataTable的数据互转
  • Docker使用相关记录
  • 【PGCCC】postgresql 缓存池并发设计
  • 如何准备验厂及验厂证书有效期
  • 开源模型应用落地-glm模型小试-glm-4-9b-chat-Gradio集成(三)
  • 什么是jQuery
  • 光耦合器在现代电子学中的关键应用
  • H5播放器EasyPlayer.js 流媒体播放器是否支持npm(yarn) install 安装?
  • 设置agetty启动参数登录Linux
  • 大模型自动构建知识图谱/GraphRAG/neo4j可视化/问答系统探索
  • HTB:Perfection[WriteUP]
  • 【Ant Design Pro】框架入门的起手式及架构的分析
  • MongoDB 基础与应用