设计模式之Builder模式

本文详细介绍了Builder模式的概念及其应用场景,通过具体实例演示了如何利用Builder模式简化复杂对象的创建过程,并探讨了该模式在实际开发中的灵活运用。

Builder模式


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

   

场景:1 相同的方法,不同的执行顺序,产生不同的事件结果

         2多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不同。
         3产生类很复杂,产品类中的调用顺序产生不同的作用
         4初始化对象很复杂,参数很多,且很多参数都是默认值。
        

         Product  Builder  ConcreteBuilder  Director


//抽象类 Product
public abstract class Car {
	protected String LunTai;
	protected String fadongji;
	protected String pinpai;
	
	protected Car() {}

	public void setLunTai(String lunTai) {
		LunTai = lunTai;
	}

	public void setFadongji(String fadongji) {
		this.fadongji = fadongji;
	}

	public abstract void setPinpai();
	@Override
	public String toString() {
		return "CAR:"+pinpai+":::::"+fadongji+"::::"+LunTai;
	}
	
}

//具体product
public class AUDI extends Car {
	protected AUDI(){}

	@Override
	public void setPinpai() {
		pinpai = "AUDI A8";
	};
}

//抽象Builder
public abstract class Builder {
	public abstract void buildLuntai(String luntai);
	
	public abstract void builddadongji(String fadongji);
	
	public abstract void buildpinpai();
	
	public abstract Car createCar();
}

//具体Builder
public class AudiBuilder extends Builder {
	
	private Car mcar = new AUDI();
	
	@Override
	public void buildLuntai(String luntai) {
		mcar.setLunTai(luntai);
	}

	@Override
	public void builddadongji(String fadongji) {
		mcar.setFadongji(fadongji);
	}

	@Override
	public void buildpinpai() {
		mcar.setPinpai();
	}

	@Override
	public Car createCar() {
		return mcar;
	}

}
//Director 构建product
public class Director {
	Builder mbuilder = null;
	
	public Director(Builder builder) {
		mbuilder = builder;
	}
	
	public void construct(String fadongji,String luntai){
		mbuilder.builddadongji(fadongji);
		mbuilder.buildLuntai(luntai);
		mbuilder.buildpinpai();
	}
}
//TEST
public static void main(String[] args) {
		Builder builder = new AudiBuilder();
		Director director = new Director(builder);
		director.construct("audi发动机", "Audi轮胎");
		System.out.println(builder.createCar().toString());
	}


通过具体Builder 构建具体product 对象,对外隐藏构建细节


实际开发中Director经常会省略:

Builder builder = new AudiBuilder();
		builder.builddadongji("audi");
		builder.buildLuntai("audi");
		builder.createCar();

使其更加简单。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值