建造者模式分析
设计模式系列总览
设计模式 | 飞机票 |
---|---|
三大工厂模式 | 登机入口 |
策略模式 | 登机入口 |
委派模式 | 登机入口 |
模板方法模式 | 登机入口 |
观察者模式 | 登机入口 |
单例模式 | 登机入口 |
原型模式 | 登机入口 |
代理模式 | 登机入口 |
装饰者模式 | 登机入口 |
适配器模式 | 登机入口 |
建造者模式 | 登机入口 |
责任链模式 | 登机入口 |
享元模式 | 登机入口 |
组合模式 | 登机入口 |
门面模式 | 登机入口 |
桥接模式 | 登机入口 |
中介者模式 | 登机入口 |
迭代器模式 | 登机入口 |
状态模式 | 登机入口 |
解释器模式 | 登机入口 |
备忘录模式 | 登机入口 |
命令模式 | 登机入口 |
访问者模式 | 登机入口 |
软件设计7大原则和设计模式总结 | 登机入口 |
前言
当我们创建一个复杂对象时,可能大家的第一反应就是使用工厂模式。但是如果构建一个对象非常复杂,而且有些比如说属性之类的是可选的,而且需要支持我们自己随意的动态搭配,那么这时候如果要用工厂设计模式就不太好实现了,所以这就需要配合我们的建造者模式来实现。
什么是建造者模式
建造者模式(Builder Pattern)是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式属于创建型模式,对使用者而言,只需要指定需要建造的类型就可以获得对象,建造过程和细节不需要了解。
建造者模式的概念听上去有点抽象,但是实际上可以这么说,基本上大家都用过,只是可能自己不知道这就是建造者模式而已。后面分析jdk源码中的应用大家就会知道了
建造者模式角色
建造者模式的设计中,主要有4个角色。
- 产品(Product):要创建的产品对象
- 抽象建造者(Builder):建造者的抽象类,规范产品对象的各个组成部分的建造,一般由子类实现具体建造过程
- 建造者(ConcreteBuilder):具体的Builder类,根据不同的业务逻辑,具体到各个对象的各个组成部分的建造
- 调用者(Director):调用具体的建造者来创建各个对象的各个部分
简单写法示例
我们先来看一个简单的建造者模式写法:
1、产品(Product)
首先我们创建一个产品,我们以家庭作业为例,假设老师会根据每个不同基础的同学布置不同难度的题目为例
package com.zwx.design.pattern.builder;
/**
* 建造者模式-产品(Product)角色
*/
public class Homework {
private String easyQc;//简答题目
private String normalQc;//正常题目
private String MediumQc;//中等难度题目
private String HardQc;//困难题目
public String getEasyQc() {
return easyQc;
}
public void setEasyQc(String easyQc) {
this.easyQc = easyQc;
}
public String getNormalQc() {
return normalQc;
}