一 需求以及实现方式
1.1 需求描述
我们要创建一个表示汽车的复杂对象,汽车包含发动机、轮胎和座椅等部分。用传统方式创建,代码如下
1.2 传统实现方式
1.抽象类
public abstract class BuildCarAbstaract {
//引擎
public abstract void buildEngine();
//补胎
public abstract void buildTires();
//座椅
public abstract void buildSeats();
public void build() {
buildEngine();
buildTires();
buildSeats();
}
}
2.具体实现
public class BeautifulCar extends BuildCarAbstaract{
@Override
public void buildEngine() {
System.out.println(" 豪华ar发动引擎");
}
@Override
public void buildTires() {
System.out.println(" 豪华car 补胎");
}
@Override
public void buildSeats() {
System.out.println(" 豪华car 座椅");
}
}
3.调用
public class CommonCar extends BuildCarAbstaract {
@Override
public void buildEngine() {
System.out.println(" 普通car发动引擎");
}
@Override
public void buildTires() {
System.out.println(" 普通car 补胎");
}
@Override
public void buildSeats() {
System.out.println(" 普通car 座椅");
}
}
4.查看执行结果:
1.3 优缺点
1.优点:容易理解,操作简单
2.缺点:产品和创建产品的过程耦合性强。
3.解决方案:将产品和产品建造过程解耦。使用建造者模式。
二 建造者模式
2.1 建造者模式概念
建造者模式:用于创建一些复杂的、可定制的对象,该对象由多个部分组成,且对象的创建过程需要遵循特定的顺序。将对象的构建过程与其表现分离,使得同样的构建过程可以创建不同的表现。
2.2 组成部分
1.产品(Product):表示最终要构建的复杂对象。
2.建造者(Builder):定义用于构建产品的接口,包含创建产品各个部分的方法。
3.具体建造者(Concrete Builder):实现Builder接口,完成产品各个部分的具体构建工作。
4.指挥者(Director):负责调用合适的建造者方法,按照特定顺序组装产品。
链接:https://www.zhihu.com/question/21857130/answer/3058463145
2.3 代码实现部分
2.4 总结
建造者模式可以帮助我们创建复杂的对象,同时保持代码的可读性和灵活性。通过将对象的构建过程与其表现分离,我们可以使用同样的构建过程创建不同的表现。在实际开发中,当遇到需要创建复杂对象的场景时,可以考虑使用建造者模式。