什么是创建者模式
Builder构建器模式也被称为生成器模式,是一种创建型设计模式, 分离复杂对象的创建和表示。简单理解就是内部有许多“小工厂”创建对象,最终来组建一个完全体。
创建者模式让我想起来很早之前的一部动画片《战神金刚》,组成脚和腿,组成躯干,我来组成头部。
创建者模式使用场景
- 同样的创建过程,可以创建出不同的表示结果。
- 创建这个对象的步骤比较多,每个步骤都需要一个零部件,最终组合成一个完整的对象。
总结就是创建复杂对象时可以使用创建者模式。
创建者的优缺点
创建者的优点
- 良好的封装性,可读性强。
- 易于扩展,生成不同形式的产品时, 你可以复用相同的制造代码。
- 便于控制风险,符合单一职责原则将复杂构造代码从产品的业务逻辑中分离出来。
创建者的缺点
该模式需要新增多个类, 因此代码整体复杂程度会有所增加。
创建者的实现
import java.util.ArrayList;
import java.util.List;
/**
* 战神金刚
*/
public class Voltron {
/**
* 头部
*/
public String head;
/**
* 脚和腿
*/
public String feetAndLegs;
/**
* 躯干
*/
public String body;
/**
* 步骤
*/
public List<String> step = new ArrayList<>();
@Override
public String toString() {
return String.join("->", step);
}
}
interface VoltronBuilder {
/**
* 组成头部
*
* @param head 头部
* @return this
*/
public VoltronBuilder buildHead(String head);
/**
* 脚和腿
*
* @param feetAndLegs 脚和腿
* @return this
*/
public VoltronBuilder buildFeetAndLegs(String feetAndLegs);
/**
* 躯干
*
* @param body 躯干
* @return this
*/
public VoltronBuilder buildBody(String body);
/**
* 构建战神金刚
*
* @return 站神
*/
public Voltron build();
}
/**
* 简单构建
*/
class SimpleVoltronBuilder implements VoltronBuilder {
Voltron voltron;
public SimpleVoltronBuilder(Voltron voltron) {
this.voltron = voltron;
}
@Override
public VoltronBuilder buildHead(String head) {
this.voltron.head = head;
this.voltron.step.add(head);
return this;
}
@Override
public VoltronBuilder buildFeetAndLegs(String feetAndLegs) {
this.voltron.feetAndLegs = feetAndLegs;
this.voltron.step.add(feetAndLegs);
return this;
}
@Override
public VoltronBuilder buildBody(String body) {
this.voltron.body = body;
this.voltron.step.add(body);
return this;
}
@Override
public Voltron build() {
return this.voltron;
}
public static void main(String[] args) {
Voltron voltron = new SimpleVoltronBuilder(new Voltron())
.buildFeetAndLegs("组成脚和腿")
.buildBody("组成躯干")
.buildHead("我来组成头部")
.build();
System.out.println(voltron.toString());
}
}
总结
创建者模式和模板方法模式极其相似,创建者模式强调的是对象的创建,模板方法模式强调的是方法的执行。创建者模式和工厂模式的区别,创建者模式侧重于产品的类型和创建顺序,工厂模式侧重于创建产品。