建造者模式

文檔查閱說明:

Tongkey

yiibai

runoob

大話設計模式

定義:將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示

使用場景:

● 相同的方法,不同的執行順序,產生不同的事件結果時;

● 多個部件或零件,都可以裝配到一個對象中,但是產生的運行結果又不相同時;

● 產品類非常複雜,或者產品類中的調用順序不同產生了不同的效能

● 需要生成的對象具有複雜的內部結構;

● 需要生成的對象內部屬性本身相互依賴

public class Product {

	List<String> list = new ArrayList<>();
	
	public void add(String part) {
		list.add(part);
	}
	
	public void show() {
		for(String part: list) {
			System.out.println("部件:"+part);
		}
	}
}
public abstract class Builder {
	public abstract void buildPartA();
	public abstract void buildPartB();
	public abstract Product getProduct();
}
public class ConCreateBuilderA extends Builder {
	private Product product = new Product();
	
	@Override
	public void buildPartA() {
		// TODO Auto-generated method stub
		product.add("頭");
		product.add("軀幹");
		product.add("雙手");
		product.add("雙腳");
	}

	@Override
	public void buildPartB() {
		// TODO Auto-generated method stub
		product.add("悠閒褲");
		product.add("純色襯衫");
		product.add("板鞋");
	}

	@Override
	public Product getProduct() {
		// TODO Auto-generated method stub
		return product;
	}

}
public class ConCreateBuilderB extends Builder {
	private Product product = new Product();
	
	@Override
	public void buildPartA() {
		// TODO Auto-generated method stub
		product.add("龍頭");
		product.add("龍軀幹");
		product.add("龍雙手");
		product.add("龍雙腳");
	}

	@Override
	public void buildPartB() {
		// TODO Auto-generated method stub
		product.add("尾巴");
		product.add("雙翼");
	}

	@Override
	public Product getProduct() {
		// TODO Auto-generated method stub
		return product;
	}

}
public class Director {
	public void construct(Builder builder) {
		builder.buildPartA();
		builder.buildPartB();
	}
}
public class Test {

	public static void main(String[] args) {
		Director director = new Director();
		Builder b1 = new ConCreateBuilderA();
		Builder b2 = new ConCreateBuilderB();
		
		director.construct(b1);
		Product p1 = b1.getProduct();
		p1.show();
		director.construct(b2);
		Product p2 = b2.getProduct();
		p2.show();
		
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章