概述
当复杂的构建过程通常不变,改变的只是内部的实现算法和业务逻辑时使用;
将复杂的构建过程和具体的内部实现相分离,使得构建过程公用化。
UML
结构
产品(Product):需要被建造的目标;
抽象建造者(Builder):规划好建造者类要执行的任务,如需要实现A项任务,B项任务和C项任务,需要返回指定产品;
具体建造者(ConcreteBuilderA和ConcreteBuilderB):具体实现每项任务,如怎样实现A项任务,B项任务和C项任务;
指挥者(Director):指挥完成任务的顺序和方式,如先完成A项任务再完成B项任务,再有选择地完成C项任务,需要指定具体的建造者和安排建造顺序。
代码
优缺点
优点:建造者独立,便于扩展,如果有新的内部逻辑只需继承/实现建造者即可,细节修改不容易影响其他逻辑;
缺点:结构相对固化,不同的构造过程难以使用同一个指挥者,如果内部细节变化过多需要更多的建造者类。
才疏学浅,如文中有错误,感谢大家指出。