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

作者:迟做总比不做强 时间:2022-09-25 19:43:04 

本文实例讲述了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,设计模式,建造者模式
0
投稿

猜你喜欢

  • Java单例模式实现静态内部类方法示例

    2021-08-03 00:36:51
  • 详解java 中Spring jsonp 跨域请求的实例

    2023-11-19 02:48:18
  • Java自定义实现链队列详解

    2023-06-22 12:47:31
  • 详解java中BigDecimal精度问题

    2021-08-17 10:24:59
  • 基于Spring-Security自定义登陆错误提示信息

    2021-09-20 17:33:40
  • Java探索之Thread+IO文件的加密解密代码实例

    2023-01-26 19:07:03
  • Java的Spring框架中AOP项目的一般配置和部署教程

    2021-07-26 16:49:25
  • Java 十大排序算法之归并排序刨析

    2022-03-15 17:29:20
  • java生成图片验证码实例代码

    2022-01-06 04:01:37
  • Swing常用组件之多行文本区JTextArea

    2023-11-08 14:16:49
  • Maven入门之使用Nexus搭建Maven私服及上传下载jar包

    2022-05-06 20:47:43
  • C#线程倒计时器源码分享

    2023-08-16 07:23:36
  • SpringCloud Eureka服务治理之服务注册服务发现

    2021-12-27 15:07:16
  • C#中泛型举例List<T>与DataTable相互转换

    2021-07-06 18:54:08
  • java编程基础之模仿用户登录代码分享

    2022-06-09 17:38:22
  • 浅谈Java中复制数组的方式

    2022-04-14 23:30:27
  • Spring的IOC控制反转详解

    2023-08-24 02:50:50
  • SpringBoot之Json的序列化和反序列化问题

    2021-11-12 07:17:29
  • Java通过Scanner了解if...else if语句

    2023-11-29 04:28:44
  • Java获取时间年、月、日的方法

    2022-02-10 16:58:36
  • asp之家 软件编程 m.aspxhome.com