Builder设计模式

Builder设计模式一般会采用链式编程结构


案例分析?

构建一台电脑(内存、CPU、显卡等等.....

内存:ram(运行内存)和rom(非运行内存)

 

分为了一些角色

Builder-->抽象类(规范产品组装)-->案例中Builder接口

ConcrateBuilder-->具体组装产品类-->案例MacBookProBuilder

Product--->具体的产品-->案例Computer

Director-->统一组装-->案例Director

UML结构

关联关系:没有你我可以生存,你没有我同样可以生存

聚合关系:没有你我可以生存,你没有我就不可以生存

组合关系:没有你我不能生存,你没有我同样不能生存

项目结构:


package com.example.builder:

package com.example.builder;

/**
 * 抽象Builder类(规范产品) 
 *
 */
public interface Builder {
	// 内存
	public Builder setMemory(String memory);

	// cpu
	public Builder setCpu(String cpu);

	// 显卡
	public Builder setDisplay(String display);

	// 系统
	public Builder setOs(String os);
	
	/**
	 * 构建电脑
	 * @return
	 */
	public Computer build();
}

package com.example.builder;

/**
 * 电脑 
 */
public class Computer {
	// 内存
	private String memory;
	// CPU
	private String cpu;
	// 显卡
	private String display;
	// 系统
	private String os;
	

	public Computer() {
		super();
	}

	public Computer(String memory, String cpu, String display, String os) {
		super();
		this.memory = memory;
		this.cpu = cpu;
		this.display = display;
		this.os = os;
	}

	public String getMemory() {
		return memory;
	}

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

	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;
	}

	public String getOs() {
		return os;
	}

	public void setOs(String os) {
		this.os = os;
		System.out.println("电脑类型:" + os);
	}

	@Override
	public String toString() {
		return "Computer [memory=" + memory + ", cpu=" + cpu + ", display="
				+ display + ", os=" + os + "]";
	}
	
	

}

package com.example.builder;

/**
 * 组装电脑 
 *
 */
public class Director {

	private Builder builder;

	public Director(Builder builder) {
		this.builder = builder;
	}

	/**
	 * 构建电脑
	 * 
	 * @param memory
	 * @param cpu
	 * @param display
	 * @param os
	 */
	public void computerDirector(String memory, String cpu, String display,
			String os) {
		this.builder.setMemory(memory);
		this.builder.setCpu(cpu);
		this.builder.setDisplay(display);
		this.builder.setOs(os);
	}

}
package com.example.builder:

package com.example.builder;

/**
 * 组装电脑 
 */
public class Director {

	private Builder builder;

	public Director(Builder builder) {
		this.builder = builder;
	}

	/**
	 * 构建电脑
	 * 
	 * @param memory
	 * @param cpu
	 * @param display
	 * @param os
	 */
	public void computerDirector(String memory, String cpu, String display,
			String os) {
		this.builder.setMemory(memory);
		this.builder.setCpu(cpu);
		this.builder.setDisplay(display);
		this.builder.setOs(os);
	}

}

package com.example.builder.test:

package com.example.builder.test;

import com.example.builder.Builder;
import com.example.builder.Director;
import com.example.builder.impl.MacBookProBuilder;

/**
 * 客户端 
 */
public class Test {
	public static void main(String[] args) {
		Builder builder = new MacBookProBuilder();
		builder.setCpu("").setDisplay("").setMemory("").setOs("").build();
		Director director = new Director(builder);
		
		director.computerDirector("16 GB 1867 MHz DDR3",
				"3.1 GHz Intel Core i7", "Intel Iris Graphics 6100 1536 MB", "10.11.5 (15F34)");
		System.out.println(builder.build().toString());
	}
}

运行结果:

苹果电脑cpu:
苹果电脑display:
苹果电脑memory:
电脑类型:
苹果电脑os:
苹果电脑memory:16 GB 1867 MHz DDR3
苹果电脑cpu:3.1 GHz Intel Core i7
苹果电脑display:Intel Iris Graphics 6100 1536 MB
电脑类型:10.11.5 (15F34)
苹果电脑os:10.11.5 (15F34)
Computer [memory=16 GB 1867 MHz DDR3, cpu=3.1 GHz Intel Core i7, display=Intel Iris Graphics 6100 1536 MB, os=10.11.5 (15F34)]



整理自ppt






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值