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,设计模式,建造者模式
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java单例模式实现静态内部类方法示例
2021-08-03 00:36:51
详解java 中Spring jsonp 跨域请求的实例
2023-11-19 02:48:18
![](https://img.aspxhome.com/file/2023/7/59667_0s.png)
Java自定义实现链队列详解
2023-06-22 12:47:31
![](https://img.aspxhome.com/file/2023/6/57426_0s.png)
详解java中BigDecimal精度问题
2021-08-17 10:24:59
![](https://img.aspxhome.com/file/2023/9/64039_0s.jpg)
基于Spring-Security自定义登陆错误提示信息
2021-09-20 17:33:40
![](https://img.aspxhome.com/file/2023/2/70352_0s.png)
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
![](https://img.aspxhome.com/file/2023/6/61656_0s.jpg)
C#线程倒计时器源码分享
2023-08-16 07:23:36
SpringCloud Eureka服务治理之服务注册服务发现
2021-12-27 15:07:16
![](https://img.aspxhome.com/file/2023/0/79950_0s.png)
C#中泛型举例List<T>与DataTable相互转换
2021-07-06 18:54:08
![](https://img.aspxhome.com/file/2023/1/71071_0s.jpg)
java编程基础之模仿用户登录代码分享
2022-06-09 17:38:22
浅谈Java中复制数组的方式
2022-04-14 23:30:27
Spring的IOC控制反转详解
2023-08-24 02:50:50
![](https://img.aspxhome.com/file/2023/1/77101_0s.png)
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