建造者模式(Builder)

​建造模式是对象的创建模式,可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

建造模式的结构

一个汽车制造厂的例子(一)
抽象的建造者:造一个汽车要什么零件
具体建造者:造出各个零件,返还汽车
导演者:厂长,调派具体建造者造零件,产汽车
产品角色:汽车
一个汽车制造厂的例子(二)
抽象的建造者(Builder):要什么零件都可以
具体建造者(一):造出各个零件,返还汽车
具体建造者(二):造出各个零件,返还火车
导演者:厂长,调派具体建造者造(一)零件,产汽车;
产品角色:汽车,火车

class Product {  
    private String name;  
    private String type; 

    public void showProduct(){  
        System.out.println("名称:"+name);  
        System.out.println("型号:"+type);  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
    public void setType(String type) {  
        this.type = type;  
    }  
}

abstract class Builder {  
    public abstract void setPart(String arg1, String arg2);  
    public abstract Product getProduct();  
}  
class ConcreteBuilder extends Builder {  
    private Product product = new Product();      
    public Product getProduct() {  
        return product;  
    }  
    public void setPart(String arg1, String arg2) {  
        product.setName(arg1);  
        product.setType(arg2);  
    }  
}

public class Director {  
    private Builder builder = new ConcreteBuilder();  
    public Product getAProduct(){  
        builder.setPart("宝马汽车","X7");  
        return builder.getProduct();  
    }  
    public Product getBProduct(){  
        builder.setPart("奥迪汽车","Q5");  
        return builder.getProduct();  
    }  
}

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Director director = new Director();  
	Product product1 = director.getAProduct();  
	product1.showProduct();  
	
	Product product2 = director.getBProduct();  
	product2.showProduct(); 
}

在什么情况下使用建造模式
1.需要生成的产品对象有复杂的内部结构。每一个内部成分本身可以是对象,也可以仅仅是一个对象的一个组成成分。
2.需要生成的产品对象的属性互相依赖。
3.在对象创建过程中会使用到系统中的其他一些对象,这些对象在产品的创建过程中不易得到。

你可能感兴趣的:(设计模式,建造者模式,java)