设计模式之建造者模式

生成器模式(Builder)是使用多个“小型”工厂来最终创建出一个完整对象。将一个复杂的对象构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

(1) 产品角色:包含多个组成部件的复杂对象。

class Product {    
    private String partA;    
    private String partB;    
    private String partC;    
    public void setPartA(String partA) {
        this.partA = partA;    
    }    
    public void setPartB(String partB) {
        this.partB = partB;
    }    
    public void setPartC(String partC) { 
        this.partC = partC;   
    }   
    public void show() {  
        //显示产品的特性   
    }
}

(2) 抽象建造者:包含创建产品各个子部件的抽象方法。

abstract class Builder {    
    //创建产品对象    
    protected Product product = new Product();  
    public abstract void buildPartA();   
    public abstract void buildPartB();   
    public abstract void buildPartC();   
    //返回产品对象    
    public Product getResult() {  
        return product;   
    }
}

(3) 具体建造者:实现了抽象建造者接口。

public class ConcreteBuilder extends Builder { 
    public void buildPartA() {      
        product.setPartA("建造 PartA");  
    }   
    public void buildPartB() {  
        product.setPartB("建造 PartB"); 
    }  
    public void buildPartC() { 
        product.setPartC("建造 PartC");
    }
}

(4) 指挥者:调用建造者中的方法完成复杂对象的创建。

class Director {   
    private Builder builder;  
    public Director(Builder builder) {  
        this.builder = builder;   
    }    
    //产品构建与组装方法 
    public Product construct() {  
        builder.buildPartA();    
        builder.buildPartB();    
        builder.buildPartC();    
        return builder.getResult();   
    }
}

(5) 客户类。

public class Client {  
    public static void main(String[] args) {  
        Builder builder = new ConcreteBuilder();    
        Director director = new Director(builder);   
        Product product = director.construct();     
        product.show();    
    }
}

具体实现:画不同的卡通人物、房子装修等等。

posted on 2021-11-26 16:54  Chase_Hanky  阅读(32)  评论(0)    收藏  举报