设计模式--建造者模式

建造者模式的本质:

      分离了对象子组件的单独构造(由Builder类负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用。

      由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。

       建造者模式实现

public class Cellphone {
	private Cpu cpu;//CPU
	private OperateSystem os;//操作系统
	private Memory memory;//内存
	public Cpu getCpu() {
		return cpu;
	}
	public void setCpu(Cpu cpu) {
		this.cpu = cpu;
	}
	public OperateSystem getOs() {
		return os;
	}
	public void setOs(OperateSystem os) {
		this.os = os;
	}
	public Memory getMemory() {
		return memory;
	}
	public void setMemory(Memory memory) {
		this.memory = memory;
	}
	
}

/**
 * CPU
 */
class Cpu {
	private String name;

	public Cpu(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}
/**
 * 操作系统
 */
class OperateSystem {
	private String name;

	public OperateSystem(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}
/**
 * 内存
 */
class Memory {
	private String name;

	public Memory(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

/**
 *构建者接口
 */
public interface CellphoneBuilder {
	Cpu builderCpu();
	OperateSystem builderOperateSystem();
	Memory builderMemory();
}
public class IPhoneBuilder implements CellphoneBuilder{

	public Cpu builderCpu() {
		System.out.println("构建苹果的CPU: A8+M8");
		return new Cpu("A8+M8");
	}

	public Memory builderMemory() {
		System.out.println("构建苹果的内存:三星1GB内存");
		return new Memory("三星1GB内存");
	}

	public OperateSystem builderOperateSystem() {
		System.out.println("构建苹果的操作系统:IOS 8.0");
		return new OperateSystem("IOS 8.0");
	}

}

/**
 *装配接口
 */
public interface CellphoneDirector {
	/**
	 * 组装手机对象
	 */
	Cellphone directCellphone();
}
/**
 *装配接口
 */
public class IPhoneDirector implements CellphoneDirector {
	
	private CellphoneBuilder builder;
	
	public IPhoneDirector(CellphoneBuilder builder) {
		this.builder = builder;
	}

	/**
	 * 组装手机对象
	 */
	public Cellphone directCellphone()
	{
		Cpu cpu = builder.builderCpu();
		Memory m = builder.builderMemory();
		OperateSystem os = builder.builderOperateSystem();
		
		Cellphone phone = new Cellphone();
		phone.setCpu(cpu);
		phone.setMemory(m);
		phone.setOs(os);
		
		return phone;
	}
}

public class Client {

	public static void main(String[] args) {
		CellphoneDirector director = new IPhoneDirector(new IPhoneBuilder());
		Cellphone  iphone = director.directCellphone();
		
		System.out.println(iphone.getOs().getName());
	}

}


建造者模式类图:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值