设计模式------构造者(Builder)模式
Builder模式是一种广泛使用的设计模式。它的定义是:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
一.经典Builder模式
经典Builder模式主要四个参与者:
- 抽象建造者(Builder):该角色用于规范产品的各个组成部分,并进行抽象,一般独立于应用程序的逻辑。
- 具体建造者(Concrete Builder):该角色实现抽象建造者中定义的所有方法,并且返回一个组建好的产品实例。
- 产品(Product):该角色是建造者中的复杂对象,一个系统中会有多于一个的产品类,这些产品类并不一定有共同的接口,完全可以是不相关联的。
- 导演者(Director):该角色负责安排已有模块的顺序,然后告诉Builder开始建造。
下面以代码的形式进行简单说明:
Product类:
public class Product { private String partOne; private String partTwo; public String GetPartOne(){ return partOne; } public void setPartOne(String partone){ this.partOne=partone; } public String GetPartTwo(){ return partTwo; } public void setPartTwo(String parttwo){ this.partTwo=parttwo; } }
Builder接口:
public interface Builder { //设置产品的不同部分,以获得不同的产品 public void buildPartOne(); public void buildPartTwo(); //建造产品 public Product getProduct(); }
ConcereteBulder类:
public class ConcereteBuilder implements Builder { private Product product; @Override public void buildPartOne() { //安装部件1 } @Override public void buildPartTwo() { //安装部件2 } //创建产品 @Override public Product getProduct() { return product; } }
Director()
类:
public class Director { private Builder bulder; public Director(Builder bulder){ this.bulder=bulder; } public void builderProduct(){ this.bulder.buildPartOne(); this.bulder.buildPartTwo(); } public Product getProduct(){ return this.bulder.getProduct(); } } //此处的导演类起到了封装左右,可以避免高层模块深入到建造者内部的实现类,
//而且导演类可以有多个,根据业务逻辑分别用来建造不同的产品并输出。