【就你不知道-Java 建造模式】


一:图

大体是这么个意思



二:使用建造模式能达到的效果

三:建造模式的应用场景




四:code

public abstract class Car {

	private String wheel;

	private String body;

	private String engine;

	public String getWheel() {
		return wheel;
	}

	public void setWheel(String wheel) {
		this.wheel = wheel;
	}

	public String getBody() {
		return body;
	}

	public void setBody(String body) {
		this.body = body;
	}

	public String getEngine() {
		return engine;
	}

	public void setEngine(String engine) {
		this.engine = engine;
	}
	
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return super.toString() + "【"+this.getBody()+";"+this.getEngine()+";"+this.getWheel()+"】";
	}

}

public class BMW extends Car {

}

public class KIA extends Car {

}



public interface CarBuilder {

	void buildBody();
	
	void buildWheel();
	
	void buildEngine();
	
	Car buildCar();
}

public class BMWBuilder implements CarBuilder {

	private BMW bmw = new BMW();

	@Override
	public void buildBody() {
		// TODO Auto-generated method stub
		System.out.println("创建BMW BODY");
		bmw.setBody("进口车身");
	}

	@Override
	public void buildWheel() {
		// TODO Auto-generated method stub
		System.out.println("创建BMW 轮子");
		bmw.setWheel("进口轮子");
	}

	@Override
	public void buildEngine() {
		// TODO Auto-generated method stub
		System.out.println("创建BMW 发动机");
		bmw.setEngine("进口 六汽缸发动机");
	}

	@Override
	public Car buildCar() {
		// TODO Auto-generated method stub
		return bmw;
	}

}

public class KIABuilder implements CarBuilder {

	private KIA kia = new KIA();
	@Override
	public void buildBody() {
		// TODO Auto-generated method stub
		kia.setBody("国产车身");
		System.out.println("建造kia车身");
	}

	@Override
	public void buildWheel() {
		// TODO Auto-generated method stub
		System.out.println("建造kia轮胎");
		kia.setWheel("国产轮胎");
	}

	@Override
	public void buildEngine() {
		// TODO Auto-generated method stub
		kia.setEngine("国产发动机");
		System.out.println("建造kia发动机");
	}

	@Override
	public Car buildCar() {
		// TODO Auto-generated method stub
		return kia;
	}

}

public class CarDirector {

	CarBuilder bmwBuilder = new BMWBuilder();
	CarBuilder kiaBuilder = new KIABuilder();
	
	
	public Car initBMW(){
		
		bmwBuilder.buildBody();
		bmwBuilder.buildEngine();
		bmwBuilder.buildWheel();
		
		return bmwBuilder.buildCar();
	}
	
	public Car initKIA(){
		
		kiaBuilder.buildBody();
		kiaBuilder.buildWheel();
		kiaBuilder.buildEngine();
		
		return kiaBuilder.buildCar();
	}
}

五:测试


public class Test {

	
	public static void main(String[] args) {
		
		CarDirector carDirector = new CarDirector();
		Car car = carDirector.initBMW();
		System.out.println(car);
		
		
		carDirector = new CarDirector();
		car = carDirector.initKIA();
		System.out.println(car);
	}
}

输出:


创建BMW BODY
创建BMW 发动机
创建BMW 轮子
create.builder.impl.BMW@1a758cb【进口车身;进口 六汽缸发动机;进口轮子】
建造kia车身
建造kia轮胎
建造kia发动机
create.builder.impl.KIA@1b67f74【国产车身;国产发动机;国产轮胎】

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值