首页 > 代码库 > (4/23)建造者模式

(4/23)建造者模式

建造者模式(生产器模式):

定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

角色组成:
Director导演
Product产品类
Builder抽象建造者

ConcretwBuilder具体建造者


//product产品类
public class Phone {
	private String name;
	private String MainBoard;
	private String system;
	private String isPassTest;
	
	public void setName(String name) {
		this.name = name;
	}
	
	
	public void setMainBoard(String mainBoard) {
		MainBoard = mainBoard;
	}

	public void setSystem(String system) {
		this.system = system;
	}
	
	public void setIsPassTest(String isPassTest) {
		this.isPassTest = isPassTest;
	}
	public void getProductInfor(){
		System.out.println("Name : "+this.name);
		System.out.println("MainBoard : "+this.MainBoard);
		System.out.println("system : "+this.system);
		System.out.println("Test : "+this.isPassTest);
		
	}
}

//抽象构造者
public interface BuilderPhone {
	public void buildPhoneName();
	public void buildMailBoard();
	public void buildSystem();
	public void judgeIsPassTest();
}

//ConcretwBuilder具体建造者
public class BuildHUAWEI implements BuilderPhone {

	private Phone HUAWEI = new Phone();
	public void buildPhoneName() {
		HUAWEI.setName("HUAWEI");
		System.out.println("HUAWEI is building...");
	}

	public void buildMailBoard() {
		HUAWEI.setMainBoard("c8812");
		System.out.println("MainBoard is ok...");
	}

	public void buildSystem() {
		HUAWEI.setSystem("Andriod4.4");
		System.out.println("System is ok...");
	}
	public void judgeIsPassTest() {
		HUAWEI.setIsPassTest("true");
		System.out.println("Test is ok...");
	}
	
	public Phone getPhone(){
		return HUAWEI;
	}
}

只要构造不同的构造者,就会有不同对象的建造过程。

//Director导演
public class DirectorBuildHUAWEI {
	public void construct(BuildHUAWEI newPhone){
		newPhone.buildPhoneName();
		newPhone.buildMailBoard();
		newPhone.buildSystem();
		newPhone.judgeIsPassTest();
	}
}

//测试类
public class BuilderPartternDemo {

	public static void main(String[] args) {

		DirectorBuildHUAWEI director = new DirectorBuildHUAWEI();
		BuildHUAWEI huawei = new BuildHUAWEI();
		director.construct(huawei);
		Phone newPhone = huawei.getPhone();
		newPhone.getProductInfor();
	}

}

总结:

建造者模式和抽象工厂模式十分相似,虽然都是用来建造庞大的复杂的对象,但是注重点不同,主要的区别:

抽象工厂模式,产品对象时直接返回的,其强调的是为创建多个存在相互关系的对象提供一个统一的接口。
工厂模式关注的是创建单个产品

建造者模式,模式强调的是一步步创建对象,并通过相同的创建过程可以获得不同的结果对象
建造者模式则关注创建符合对象,多个部分。

关于应用:

相同的方法,不同的执行顺序,产生不同的结果时 ,使用建造者模式
多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时,使用建造者模式
产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,使用建造者模式


到今天才明白是什么设计模式,设计模式注重的思想,一个人有一个人的实现方式,重要的是我该如何应用这个思想


(4/23)建造者模式