java设计模式之建造者模式

建造者模式是创建型模式的一种,有人将建造者模式解释为抽象工厂模式和最后的main方法结合起来得到的,这个解释过于简单

这里举个例子说明,首先一个model模型

public abstract class model {

	public ArrayList<String> sequence =new ArrayList<String>();
	
	protected abstract void start();
	protected abstract void stop();
	public void run() {
		//循环一遍,谁在前,就先执行谁
		for(int i=0;i<this.sequence.size();i++){
			
			String actionName = this.sequence.get(i);
			if(actionName.equalsIgnoreCase("start")){ //如果是start关键字,
				this.start(); //开启汽车
			}else if(actionName.equalsIgnoreCase("stop")){ //如果是stop关键字
				this.stop(); //停止汽车
			}
		}
	}
}

然后一个三轮车模型,一个四轮车模型

public class ThreeModel extends model{

	@Override
	protected void start() {
		// TODO Auto-generated method stub
		System.out.println("三轮的启动");
	}

	@Override
	protected void stop() {
		// TODO Auto-generated method stub
		System.out.println("三轮的关闭");
	}

}

public class FourModel extends model{

	@Override
	protected void start() {
		// TODO Auto-generated method stub
		System.out.println("四轮的启动");
	}

	@Override
	protected void stop() {
		// TODO Auto-generated method stub
		System.out.println("四轮的关闭");
	}

}

这里是把这里做的复杂些,搞简单点也就两个实体类代替了,这里如果简化了就真成了抽象工厂模式和最后的main方法结合。接下来是建造者

public abstract class carBuilder {

	public abstract void setSequence(ArrayList<String> sequence);
	public abstract model getModel();
}

public class ThreeCar extends carBuilder {

	ThreeModel three = new ThreeModel();
	@Override
	public void setSequence(ArrayList<String> sequence) {
		// TODO Auto-generated method stub
		three.sequence = sequence;
	}

	@Override
	public model getModel() {
		// TODO Auto-generated method stub
		return three;
	}

}

public class FourCar extends carBuilder {

	FourModel four = new FourModel();
	@Override
	public void setSequence(ArrayList<String> sequence) {
		// TODO Auto-generated method stub
		four.sequence = sequence;
	}

	@Override
	public model getModel() {
		// TODO Auto-generated method stub
		return four;
	}

}

这里就是用了抽象工厂类的模式,接下来就是director类

public class Director {
	private ArrayList<String> sequence = new ArrayList();
	FourCar four = new FourCar();
	ThreeCar three = new ThreeCar();
	
	public ThreeModel getThreeModel(){
		this.sequence.clear();
		this.sequence.add("start");
		this.sequence.add("stop");
		this.three.setSequence(sequence);
		return this.three.three;
	}
	
	public FourModel getFourModel(){
		this.sequence.clear();
		this.sequence.add("stop");
		this.sequence.add("start");
		this.four.setSequence(sequence);
		return this.four.four;
	}
}

最后实现调用一下

public class test {

	public static void main(String[] args) {
		Director d = new Director();
		for (int i = 0; i < 10; i++) {
			d.getFourModel().run();
		}
		for (int i = 0; i < 10; i++) {
			d.getThreeModel().run();
		}
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值