建造者模式

一、背景

       现在很多pc游戏对电脑的配置要求比较高,于是现在的很多玩家都喜欢选择组装的电脑,这样才能自主定义自己的性能要求。但是大多数计算机小白却不懂如何选型和组装,如果自己组装还得现学组装流程和一些硬件方面的知识。于是一些卖组装电脑的店家便出现了。用户只需要给他们描述自己想要个什么样的电脑,他们便给用户选型(cpu,主板,内存,显卡等等)并组装好给用户。这便是我们要说的建造者模式。

二、概念

       建造者模式:将对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。

三、代码实例

package builderPattern;

/**
 * 创建computer各个部件的指定接口 抽象建造者
 */
interface ComputerBuilder {
	public void buildCpu();

	public void buildMemory();

	public void buildGraphics();

	public Computer getComputer();
}

/**
 * 组装电脑的过程(使用建造者的对象) 
 * 构建过程
 */
class ComputerDirector {
	public void assembleComputer(ComputerBuilder builder) {
		builder.buildCpu();
		builder.buildMemory();
		builder.buildGraphics();
	}
}

/**
 * 具体的装机人员(具体建造者)
 * 
 */
class ComputerConcreteBuilder implements ComputerBuilder {
	private Computer computer = new Computer();

	@Override
	public void buildCpu() {
		System.out.println("组装酷睿i7 cpu");
		computer.setCpuName("酷睿i7");
	}

	@Override
	public void buildMemory() {
		System.out.println("组装DDR4 16G内存");
		computer.setMemoryName("DDR4 16G");
	}

	@Override
	public void buildGraphics() {
		System.out.println("组装1080p 显卡");
		computer.setGraphicsName("1080p 显卡");
	}

	@Override
	public Computer getComputer() {
		return computer;
	}
}

/**
 * 产品 电脑 表示被构造的复杂对象
 */
class Computer {

	private String cpuName;
	private String memoryName;
	private String graphicsName;

	public String getCpuName() {
		return cpuName;
	}

	public void setCpuName(String cpuName) {
		this.cpuName = cpuName;
	}

	public String getMemoryName() {
		return memoryName;
	}

	public void setMemoryName(String memoryName) {
		this.memoryName = memoryName;
	}

	public String getGraphicsName() {
		return graphicsName;
	}

	public void setGraphicsName(String graphicsName) {
		this.graphicsName = graphicsName;
	}

	public void show() {
		System.out.println("computer:" + "cpu:" + this.cpuName 
				+ " memory:" + this.memoryName + " graphics:"
				+ this.graphicsName);
	}
}

public class BuilderPatternCli {
	public static void main(String[] args) {
		ComputerDirector cmpDirector = new ComputerDirector();//组装过程
		ComputerConcreteBuilder cmpconbd = new ComputerConcreteBuilder();//具体建造者
		cmpDirector.assembleComputer(cmpconbd);//组装
		cmpconbd.getComputer().show();//得到电脑
	}
}

四、总结

      1.建造者模式由抽象建造者,具体建造者,建造过程对象,和要建造的复杂对象等角色组成。建造过程对象提供统一的建造过程,具体建造者提供不同的建造方式。

      2.适用场景:

      a.当创建复杂对象的算法独立于该对象的组成部分或装配方式时,适合适用建造者模式。

      b.当构造过程必须允许被构造的对象有不同表示时。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值