建造模式简介

建造模式:某些产品(业务逻辑),需要多个零件(逻辑)组合而成,这时,可以选择建造模式来完成代码设计。

在建造模式包括了(1)抽象建造类,(2)具体建造类,(3)产品类,(4)指挥类。客户端在调用的时候,不必具体了解各个产品的创建过程,只需告诉指挥类,我要创建哪个产品,在指挥类中完成对产品建造的加载,具体建造过程由具体建造类来完成。


下面给出例子代码,制造长城汽车和制造QQ汽车。

抽象产品类

public interface Product {
	public String getMotor();

	public void setMotor(String motor);

	public String getCarSite();

	public void setCarSite(String carSite);

	public String getWhell();

	public void setWhell(String whell);
}

具体产品类(长城汽车,QQ汽车)

public class ProductChangCheng implements Product {
	
	private String motor = null;
	
	private String carSite = null;
	
	private String whell = null;

	public String getMotor() {
		return motor;
	}

	public void setMotor(String motor) {
		this.motor = motor;
	}

	public String getCarSite() {
		return carSite;
	}

	public void setCarSite(String carSite) {
		this.carSite = carSite;
	}

	public String getWhell() {
		return whell;
	}

	public void setWhell(String whell) {
		this.whell = whell;
	}

}
public class ProductQQ implements Product {
	
	private String motor = null;
	
	private String carSite = null;
	
	private String whell = null;

	public String getMotor() {
		return motor;
	}

	public void setMotor(String motor) {
		this.motor = motor;
	}

	public String getCarSite() {
		return carSite;
	}

	public void setCarSite(String carSite) {
		this.carSite = carSite;
	}

	public String getWhell() {
		return whell;
	}

	public void setWhell(String whell) {
		this.whell = whell;
	}
}


 
 

抽象建造类

public interface Builder {

	// 制造发动机
	public void buildMotor ();
	
	// 制造车轮
	public void buildWhell ();
	
	// 制造底盘
	public void buildCarsite ();
	
	// 返回产品类
	public Product getProduct();
}


具体建造类(制造长城汽车,制造QQ汽车)

public class CreateCarChangCheng implements Builder {

	private Product product = new ProductChangCheng();
	
	@Override
	public void buildCarsite() {
		product.setCarSite("长城汽车底盘");
		System.out.println("制造长城汽车底盘");
	}

	@Override
	public void buildMotor() {
		product.setMotor("长城汽车发动机");
		System.out.println("制造长城汽车发动机");
	}

	@Override
	public void buildWhell() {
		product.setWhell("长城汽车车轮");
		System.out.println("制造长城汽车车轮");
	}

	@Override
	public Product getProduct() {
		return product;
	}

}

public class CreateQQ implements Builder {

	private Product product = new ProductChangCheng();

	@Override
	public void buildCarsite() {
		product.setCarSite("QQ汽车底盘");
		System.out.println("制造QQ汽车底盘");
	}

	@Override
	public void buildMotor() {
		product.setMotor("QQ汽车发动机");
		System.out.println("制造QQ汽车发动机");
	}

	@Override
	public void buildWhell() {
		product.setWhell("QQ汽车车轮");
		System.out.println("制造QQ汽车车轮");
	}

	@Override
	public Product getProduct() {
		return product;
	}

}


指挥类

public class Director {

	Product product = null;
	
	Builder builder = null;
	
	public Director (Builder builder) {
		this.builder = builder;
	}
	
	public Product build () {
		builder.buildMotor();
		builder.buildCarsite();
		builder.buildWhell();
		return builder.getProduct();
	}
	
}


客户端调用

public class Ex {

	public static void main (String [] args) {
		// 制造一辆QQ
		CreateQQ cq = new CreateQQ();
		Director directorQQ = new Director(cq);
		Product pQQ = directorQQ.build();
		System.out.println(pQQ.getCarSite());
		

		// 制造一辆QQ
		CreateCarChangCheng cccc = new CreateCarChangCheng();
		Director directorCC = new Director(cccc);
		Product pCC = directorCC.build();
		System.out.println(pCC.getCarSite());
	}
}


你可能感兴趣的:(制造,String,qq,Class,interface,产品)