您的位置:首页 > 产品设计 > UI/UE

Builder设计模式

2016-07-27 16:58 525 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: