builder模式


BuilderPattern

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

这里举个例子帮助理解,分别由主人master、设计师director、民工mingong 组成。

主人要装修房子,却什么也不会,口袋只剩钱了。于是他要请设计师,还有民工。这是主人把任务交给他们了。好,这时开始了。设计师只会设计,发号施令,砌砖什么的,啥也不会。于是他又把这些任务交给了民工。

但是民工必须满足一定的要求才能胜任(实现接口builder,使其满足要求);。。。。。。好了,装修好了,这时到了交房了。builder设计模式的作者让 民工 交房(作者的意图代码备注本人有个人的理解,当然网上 还有很多个人的看法)。OK。完成!

package Test;

/**
 * 建造者模式 成员:主人master、设计师director、民工mingong;
 * 
 * @author Administrator
 * 
 */
public class Client {
	public static void main(String[] args) {
		Builder builder = new Mingong();
		Director director = new Director(builder);//对民工发号施令
		/**
		 * 当房子建好后,主人来要房,这是我们会有这样一个问题,是向设计师要还是民工要?
		 * 对于这个问题,结果是向民工要。
		 * 个人的理解:设计师只负责发号施令,把心理的想法什么的告诉民工,由民工来建设。
		 * 起到指导作用。而对于民工的任务是否完成,还得有民工自己知道。只有的完成了,由民工
		 * 告诉设计师,或者主人。所以主人要房子,得向民工要。对于本人的解释只作为参考。到底
		 * 是为什么看个人理解。
		 */
		builder.handHouse();
	}
}

接口:

package Test;
/**
 * master 的一些需求,民工要会的一些技能
 * @author Administrator
 *
 */
public interface Builder {
	void buildWindow();//装窗户
	void buildDoor();//装门
	void buildBrick();//砌砖
	void handHouse();//交房子
}
民工:
package Test;
/**
 * 能胜任主人要求的民工,需要具备的技能
 * @author Administrator
 *
 */
public class Mingong implements Builder {

	@Override
	public void buildWindow() {
		// TODO Auto-generated method stub
		JOut.println("装窗户...");
	}

	@Override
	public void buildDoor() {
		// TODO Auto-generated method stub
		JOut.println("装门...");
	}

	@Override
	public void buildBrick() {
		// TODO Auto-generated method stub
		JOut.println("砌砖...");
	}

	@Override
	public void handHouse() {
		JOut.println("任务完成,交房子...");
	}
}

设计师:

package Test;
/**
 * 设计者,主要负责命令民工做什么。
 * @author Administrator
 *
 */
public class Director {
	Director(Builder builder){
		builder.buildBrick();//砌砖
		builder.buildDoor();//装门
	}
}

方便输出,写了个静态类:

package Test;

public class JOut {
	public static void println(Object o) {
		System.out.println(o);
	}
}

运行结果:

砌砖...
装门...
任务完成,交房子...

代码什么的,本人借鉴于别人。上面的备注,及看法属个人的理解。如有一些错误,请帮忙指出。如您有上面好的理解,或者看法,帮忙给出。在此谢谢了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值