建造模式:就是把复杂的创建过程封装在内部,对外部来说只需要传入建造者和建造工具,不需要关心内部的具体实现。
示例:
假如我们要生产一台笔记本,笔记本由A、B、C三部分组成,这时我们可以A\B\C三部分的生产看成为一个建造工具,然后再由一个工人(建造者)将三部分组装起来。
第一部分:BuildTool(建造工具)接口
public interface BuildTool(){ //A部件 public void buildA(); //部件B public void buildB(); //部件C public void buildC(); //得到完整的产品 Product getProduct(); }
建造工具接口的实现:
public class Creater implements BuildTool{ Part A,B,C; public void buildA(){ //实现 } public void buildB(){ //实现 } public void buildC(){ //实现 } public Product getProduct(){ //实现 return product; } }
第二部分:Builder(建造者)
public class Builder(){ BuildTool tool; //传入建造工具 public Builder(BuildTool tool){ this.tool=tool; } //进行建造 public void construct(){ tool.buildA(); tool.buildB(); tool.buildC(); } }
调用:
BulidTool tool=new Creater();//建造工具 Builder builder=new Builder(tool);//建造者 builder.construct();//开始组装 Product p=tool.getProduct();//得到产品
应用场景:当要构建一个复杂的对象。 一个类的各个组成部分的具体实现类或者算法经常面临着变化,但是将他们组合在一起的算法却相对稳定。提供一种封装机制 将稳定的组合算法于易变的各个组成部分隔离开来