天天看點

建造者模式(生成器模式)百度百科基本介紹 四個角色 原理類圖

百度百科

https://baike.baidu.com/item/%E5%BB%BA%E9%80%A0%E8%80%85%E6%A8%A1%E5%BC%8F/3229729

基本介紹

建造者模式(生成器模式)百度百科基本介紹 四個角色 原理類圖

 四個角色

建造者模式(生成器模式)百度百科基本介紹 四個角色 原理類圖

 原理類圖

建造者模式(生成器模式)百度百科基本介紹 四個角色 原理類圖

本文事例UML圖

建造者模式(生成器模式)百度百科基本介紹 四個角色 原理類圖

product:

// 産品
public class House {
	
	private String baise;
	private String wall;
	private String roofed;
	public String getBaise() {
		return baise;
	}
	public void setBaise(String baise) {
		this.baise = baise;
	}
	public String getWall() {
		return wall;
	}
	public void setWall(String wall) {
		this.wall = wall;
	}
	public String getRoofed() {
		return roofed;
	}
	public void setRoofed(String roofed) {
		this.roofed = roofed;
	}
	
	
}
           

抽象創造者

// 抽象的建造者
public abstract class HouseBuilder {
	
	protected House house = new House(); // 組合産品房子
	
	// 将建造的流程寫好,抽象的方法
	public abstract void buildBasic();
	public abstract void buildWalls();
	public abstract void roofed();
	
	public House buildHouse() {
		return house;
	}
	
}
           

指揮者:

//指揮者,制作流程,傳回産品
public class HouseDirector {
	
	HouseBuilder houseBuilder = null;
	
	
	public HouseDirector(HouseBuilder houseBuilder) {
		this.houseBuilder = houseBuilder;
	}


	public HouseBuilder getHouseBuilder() {
		return houseBuilder;
	}


	public void setHouseBuilder(HouseBuilder houseBuilder) {
		this.houseBuilder = houseBuilder;
	}
	
	//處理建造房子的流程,業務邏輯 ,交給指揮者
	
	public House constructHouse() {
		houseBuilder.buildBasic();
		houseBuilder.buildWalls();
		houseBuilder.roofed();
		return houseBuilder.buildHouse();
	}

}
           

具體建立者,比如高樓和矮樓:

package builder;

public class CommonHouse extends HouseBuilder {

	@Override
	public void buildBasic() {
		System.out.println("普通房子打地基6米");
		
	}

	@Override
	public void buildWalls() {
		System.out.println("普通房子砌牆10米");
		
	}

	@Override
	public void roofed() {
		System.out.println("普通房子正常封頂");
		
	}

}
           
package builder;

public class HighBuilding extends HouseBuilder {

	@Override
	public void buildBasic() {
		System.out.println("高樓大廈打地基50米");
		
	}

	@Override
	public void buildWalls() {
		System.out.println("高樓大廈砌牆100米");
		
	}

	@Override
	public void roofed() {
		System.out.println("高樓大廈透明封頂");
		
	}

}
           

測試結果:

建造者模式(生成器模式)百度百科基本介紹 四個角色 原理類圖

JDK源碼:

建造者模式(生成器模式)百度百科基本介紹 四個角色 原理類圖

 建立者模式的注意事項和細節

建造者模式(生成器模式)百度百科基本介紹 四個角色 原理類圖
建造者模式(生成器模式)百度百科基本介紹 四個角色 原理類圖

繼續閱讀