(六)建造者模式

建造者模式

一、什么是建造者模式

Builder模式也叫建造者模式或者生成器模式,是由GoF提出的23种设计模式中的一种。Builder模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。

二、建造者模式的结构


三、建造者模式应用场景

- 对象的创建:Builder模式是为对象的创建而设计的模式

- 创建的是一个复合对象:被创建的对象为一个具有复合属性的复合对象

- 关注对象创建的各部分的创建过程:不同的工厂(这里指builder生成器)对产品属性有不同的创建方法

package org.fbm.builder;

public class Computer {
	//主板
	private String mainBoard;
	//内存
	private String memory;
	//硬盘
	private String disk;
	//处理器
	private String cpu;
	//显示器
	private String display;

	public String getMainBoard() {
		return mainBoard;
	}

	public void setMainBoard(String mainBoard) {
		this.mainBoard = mainBoard;
	}

	public String getMemory() {
		return memory;
	}

	public void setMemory(String memory) {
		this.memory = memory;
	}

	public String getDisk() {
		return disk;
	}

	public void setDisk(String disk) {
		this.disk = disk;
	}

	public String getCpu() {
		return cpu;
	}

	public void setCpu(String cpu) {
		this.cpu = cpu;
	}

	public String getDisplay() {
		return display;
	}

	public void setDisplay(String display) {
		this.display = display;
	}

}

package org.fbm.builder;

public interface ComputerBuilder {
	//造主板
	public void makeMainBoard();
    //造内存
	public void makeMemory();
    //造硬盘
	public void makeDisk();
    //造CPU
	public void makeCpu();
    //造显示器
	public void makeDisplay();
	//造电脑
	public Computer getComputer();
}

package org.fbm.builder;

//经销商
public class Distributor {
   public void sellComputer(ComputerBuilder builder){
	   builder.makeMainBoard();
	   builder.makeCpu();
	   builder.makeDisk();
	   builder.makeDisplay();
	   builder.makeMemory();
   }
}

package org.fbm.builder;

public class HPComputer implements ComputerBuilder {
	Computer computer = new Computer();

	public void makeMainBoard() {
		computer.setMainBoard("华硕的主板");

	}

	public void makeMemory() {
		computer.setMemory("金士顿的内存");

	}

	public void makeDisk() {
		computer.setDisk("西部数据的硬盘");
	}

	public void makeCpu() {
		computer.setCpu("AMD CPU");
	}

	public void makeDisplay() {
		computer.setDisplay("三星显示器");
	}

	public Computer getComputer() {
		return computer;
	}

}

package org.fbm.builder;

public class LenovoComputer implements ComputerBuilder {
	Computer computer = new Computer();

	public void makeMainBoard() {
		computer.setMainBoard("华硕的主板");

	}

	public void makeMemory() {
		computer.setMemory("三星的内存");

	}

	public void makeDisk() {
		computer.setDisk("希捷的硬盘");
	}

	public void makeCpu() {
		computer.setCpu("Intel CPU");
	}

	public void makeDisplay() {
		computer.setDisplay("索尼显示器");
	}

	public Computer getComputer() {
		return computer;
	}

}

package org.fbm.builder;

public class MianClass {
	public static void main(String[] args) {
		ComputerBuilder Lenovo=new LenovoComputer();
		ComputerBuilder HP=new HPComputer();
		Computer computer=null;
		
		Distributor distributor1=new Distributor();
		distributor1.sellComputer(Lenovo);	
		computer=Lenovo.getComputer();
		System.out.println(computer.getCpu()+"|"+computer.getMemory()+"|"+computer.getDisk()+"|"+computer.getMainBoard()+"|"+computer.getDisplay());
		System.out.println("------------------------------------------");
		Distributor distributor2=new Distributor();
		distributor2.sellComputer(HP);
		computer=HP.getComputer();
		System.out.println(computer.getCpu()+"|"+computer.getMemory()+"|"+computer.getDisk()+"|"+computer.getMainBoard()+"|"+computer.getDisplay());
	}

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值