建造者模式

根据个人的经验来说,建造者模式多数用于比较复制的对象构建时,为了简化调用者的逻辑处理用的,简单来说就是调用的时候写更少的代码吧。。。
举例说明:电脑厂商要组装一台电脑(从整体上分为主机,显示器,键盘,鼠标),我们为每个部件提供一种选择(真正的产品完全可以有很多选择)

public class Host(){...}
public class Monitor(){...}
public class KeyBoard(){...}
public class Mouse(){...}

X厂商要组装一个XComputer类型的电脑:

public class XComputer(){
	private Host host;
	private Monitor monitor;
	private KeyBoard keyboard;
	private Mouse mouse;
}
使用原始的使用方式组装一台电脑:
XComputer computer = new XComputer();
AHost host = new AHost();
computer.setHost(host);
....
....

现在我们使用使用创建者模式:

1. 我们首先就需要选定各个部件,所以我们定义一个接口作为选定部件用

public interface ComputerBuilder{
	Host buildHost(); //选主机
	Monitor buildMonitor();//选显示器
	KeyBoard buildKeyBoard();//选键盘
	Mouse buildMouse();//选鼠标
}

2. 我们为X厂商定义一个接口,用于组装电脑用:

public interface ComputerDirector{
	XComputer createComputer();
}

3. 为X封装一个类,实现选部件接口
public class XComputerBuilder implements ComputerBuilder{
	@Override
	public Host buildHost(){
		return new Host();
	}
	...
}
4. 为X提供一个类,实现组装接口完成组装
public class XComputerDirector implements ComputerDirector {
	private ComputerBuilder builder;
	public XComputerDirector(ComputerBuilder builder){
		this.builder = builder
	} 
	@Override
	public XComputer createComputer(){
		Host host = builder.buildHost();
		Monitor monitor = builder.buildMonitor();
		KeyBoard keyboard = builder.buildKeyboard();
		Mouse mouse = builder.buildMouse();
		
		XComputer computer = new XComputer();
		computer.setHost(host);
		computer.setMonitor(monitor);
		computer.setKeyboard(keyboard);
		computer.setMouse(mouse);
		return computer;
	}
}
此时每次要组装一台XComputer,

XComputer computer = XComputerDirector(new XcomputerBuilder());

一般项目很少创建者模式,但是当涉及到大规模的产品 时 就非常有优势了,可以开下脑洞,怎么结合工厂模式变得更灵活。比如有多个工厂都要组装自己品牌的电脑,提供的部件也有多种类型时。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值