JAVA设计模式之建造者模式原理与用法详解

发布时间 - 2026-01-11 02:37:35    点击率:

本文实例讲述了JAVA设计模式之建造者模式定义与用法。分享给大家供大家参考,具体如下:

建造者模式:将复杂对象的构造与它的实现相分离,让相同的构建过程可以创建不同的对象。

适用场合:

复杂对象的算法应该独立于该对象的组成部分或当构造过程允许被构造不同的对象时。

组成角色:

1 创建者(Builder)接口:为创建一个对象的对应部件所指定抽象接口。
2 具体创建者(ConcreteBuilder):实现Builder的接口以构造对象的各个部件。
3 具体创建者管理对象(Director):使用Builder接口的对象。
4 复杂产品对象(Product):被构造的复杂对象。

/**
 * 生产汽车:创建者Builder接口
 * @description:
 * @date 2016-1-21 下午1:15:39
 */
public interface CarBuilder {
  void carRoof();//生产车顶
  void carBottom();//生产车底盘
  void carWheel();//生产车轮
  Car buildCar();
}

/**
 * 具体创建对象ConcreteBuilder:白色汽车
 * @description:
 * @date 2016-1-21 下午1:16:22
 */
public class WhiteCar implements CarBuilder {
  Car car;
  public WhiteCar() {
    car = new Car();
  }
  @Override
  public void carRoof() {
    car.setRoof("制造白色汽车---车顶");
  }
  @Override
  public void carBottom() {
    car.setBottom("制造白色汽车---车底");
  }
  @Override
  public void carWheel() {
    car.setWheel("制造白色汽车---车轮");
  }
  @Override
  public Car buildCar() {
    // TODO Auto-generated method stub
    return car;
  }
}

/**
 * 具体创建者管理对象(Director),建造者
 * @description:
 * @author ldm
 * @date 2016-1-21 下午1:17:12
 */
public class CarDirector {
  public Car constructPerson(CarBuilder carBuilder) {
    carBuilder.carRoof();
    carBuilder.carBottom();
    carBuilder.carWheel();
    return carBuilder.buildCar();
  }
}

/**
 * 最终生产的'复杂产品'对象
 * @description:
 * @date 2016-1-21 下午1:22:28
 */
public class Car {
  private String roof;// 车顶
  private String bottom;// 车底
  private String wheel;// 车轮
  public String getRoof() {
    return roof;
  }
  public void setRoof(String roof) {
    this.roof = roof;
  }
  public String getBottom() {
    return bottom;
  }
  public void setBottom(String bottom) {
    this.bottom = bottom;
  }
  public String getWheel() {
    return wheel;
  }
  public void setWheel(String wheel) {
    this.wheel = wheel;
  }
}

测试代码:

public class Test {
  public static void main(String[] args) {
    CarDirector carDirector = new CarDirector();
    Car car = carDirector.constructPerson(new WhiteCar());
    System.out.println(car.getRoof());
    System.out.println(car.getBottom());
    System.out.println(car.getWheel());
    System.out.println("----整个车子就完成了!--");
  }
}

打印结果:

制造白色汽车—车顶
制造白色汽车—车底
制造白色汽车—车轮
—-整个车子就完成了!–

更多java相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

希望本文所述对大家java程序设计有所帮助。


# JAVA  # 设计模式  # 建造者模式  # 深入理解Java设计模式之建造者模式  # JAVA设计模式----建造者模式详解  # java设计模式--建造者模式详解  # Java通俗易懂系列设计模式之建造者模式  # Java设计模式之建造者模式实例详解  # 理解java设计模式之建造者模式  # Java设计模式之建造者模式的示例详解  # 下午  # 操作技巧  # 完成了  # 相关内容  # 感兴趣  # 数据结构  # 给大家  # 所述  # 创建一个  # 程序设计  # 组成部分  # 讲述了  # date  # System  # description  # class  # pre 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 深圳网站制作培训,深圳哪些招聘网站比较好?  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  jQuery 常见小例汇总  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  网站建设保证美观性,需要考虑的几点问题!  如何快速搭建虚拟主机网站?新手必看指南  如何在IIS中配置站点IP、端口及主机头?  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  如何在宝塔面板中修改默认建站目录?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  制作公司内部网站有哪些,内网如何建网站?  nodejs redis 发布订阅机制封装实现方法及实例代码  Python3.6正式版新特性预览  微信h5制作网站有哪些,免费微信H5页面制作工具?  昵图网官方站入口 昵图网素材图库官网入口  常州企业网站制作公司,全国继续教育网怎么登录?  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  如何在景安云服务器上绑定域名并配置虚拟主机?  微信小程序 input输入框控件详解及实例(多种示例)  如何解决hover在ie6中的兼容性问题  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  canvas 画布在主流浏览器中的尺寸限制详细介绍  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  什么是javascript作用域_全局和局部作用域有什么区别?  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  如何快速搭建支持数据库操作的智能建站平台?  高端云建站费用究竟需要多少预算?  北京网站制作的公司有哪些,北京白云观官方网站?  Android自定义listview布局实现上拉加载下拉刷新功能  iOS发送验证码倒计时应用  Laravel如何处理文件下载请求?(Response示例)  Laravel如何使用Blade组件和插槽?(Component代码示例)  Laravel如何使用.env文件管理环境变量?(最佳实践)  如何在万网自助建站中设置域名及备案?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  jQuery中的100个技巧汇总  专业商城网站制作公司有哪些,pi商城官网是哪个?  Laravel如何创建自定义Artisan命令?(代码示例)  如何快速登录WAP自助建站平台?  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  如何在七牛云存储上搭建网站并设置自定义域名?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  个人摄影网站制作流程,摄影爱好者都去什么网站?  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  如何在Ubuntu系统下快速搭建WordPress个人网站?  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成