Design Pattern_Java:Builder Pattern
来源:互联网 发布:云计算平台storm 编辑:程序博客网 时间:2024/05/22 19:49
Design Pattern:Builder Pattern
建造者模式 Builder Pattern
Separate the construction of a complex object from its representation so that the same construction process can create different representations.
将一个复杂对象的构建与它的表示分离,是的同样的构建过程可以创建不同的表示。
抽象建造者角色(Builder):该角色用于规范产品的各个组成部分,并进行抽象,一般独立于应用程序的逻辑。
public abstract class Builder {//设置产品的不同部分,以获得不同的产品public abstract void setPart1();public abstract void setPart2();public abstract void setPart3();//建造产品public abstract Product builderProduct();}
具体建造者角色(Concrete Builder):该角色实现抽象建造者中定义的所有方法,并且返回一个组建好的产品实例。
public class ConcreteBuilder extends Builder{private Product product=new Product();//设置产品零件@Overridepublic void setPart1() { //为product安装部件1}@Overridepublic void setPart2() { //为product安装部件2}@Overridepublic void setPart3() { //为product安装部件2}//建造一个产品@Overridepublic Product builderProduct() { return product;}}
产品角色(Product):该角色是建造中的复杂对象,一个系统中会有多于一个的产品类,这些产品类并一定有共同的接口,完全可以是不想关联的。
public class Product{ //产品类的业务处理方法}
导演者角色(Director):该角色负责安排已有模块的顺序,然后告诉Builder开始建造。
public class Director{ private Builder builder=new ConcreteBuilder(); //构造产品,负责调用各个零件建造方法 public Product build(){ builder.setPart1(); builder.setPart2(); builder.setPart3(); return builder.builderProduct(); }}
建造者模式的实例
Computer.java
package com.DesignPattern.Creational.Builder;public abstract class Computer { private String type; private String cpu; private String ram; private String hardDisk; private String monitor; private String os; public String getType() { return type; } public void setType(String type) { this.type = type; } public String getCpu() { return cpu; } public void setCpu(String cpu) { this.cpu = cpu; } public String getRam() { return ram; } public void setRam(String ram) { this.ram = ram; } public String getHardDisk() { return hardDisk; } public void setHardDisk(String hardDisk) { this.hardDisk = hardDisk; } public String getMonitor() { return monitor; } public void setMonitor(String monitor) { this.monitor = monitor; } public String getOs() { return os; } public void setOs(String os) { this.os = os; }}
T410.java
package com.DesignPattern.Creational.Builder;public class T410 extends Computer { private String graphicCard; public T410() { this.setType("ThinkPad T410i"); } public String getGraphicCard() { return graphicCard; } public void setGraphicCard(String graphicCard) { this.graphicCard = graphicCard; } @Override public String toString() { return "T410 [graphicCard=" + graphicCard + ", getType()=" + getType() + ", getCpu()=" + getCpu() + ", getRam()=" + getRam() + ", getHardDisk()=" + getHardDisk() + ", getMonitor()=" + getMonitor() + ", getOs()=" + getOs() + "]"; }}
X201.java
package com.DesignPattern.Creational.Builder;public class X201 extends Computer { public X201() { this.setType("ThinkPad X201i"); } @Override public String toString() { return "X201 [getType()=" + getType() + ", getCpu()=" + getCpu() + ", getRam()=" + getRam() + ", getHardDisk()=" + getHardDisk() + ", getMonitor()=" + getMonitor() + ", getOs()=" + getOs() + "]"; }}
ComputerBuilder.java
package com.DesignPattern.Creational.Builder;public interface ComputerBuilder { void buildCpu(); void buildRam(); void buildHardDisk(); void buildGraphicCard(); void buildMonitor(); void buildOS(); Computer getResult();}
T410Builder.java
package com.DesignPattern.Creational.Builder;public class T410Builder implements ComputerBuilder { private T410 computer = new T410(); @Override public void buildCpu() { computer.setCpu("i5-450"); } @Override public void buildRam() { computer.setRam("4GB 1333MHz"); } @Override public void buildHardDisk() { computer.setHardDisk("500G 7200转"); } @Override public void buildGraphicCard() { computer.setGraphicCard("Nvidia NVS 3100M"); } @Override public void buildMonitor() { computer.setMonitor("14英寸 1280*800"); } @Override public void buildOS() { computer.setOs("Windows 7旗舰版"); } @Override public Computer getResult() { return computer; }}
X201Builder.java
package com.DesignPattern.Creational.Builder;public class X201Builder implements ComputerBuilder { private X201 computer = new X201(); @Override public void buildCpu() { computer.setCpu("i3-350"); } @Override public void buildRam() { computer.setRam("2GB 1333MHz"); } @Override public void buildHardDisk() { computer.setHardDisk("250G 5400转"); } @Override public void buildGraphicCard() { // 无显卡 } @Override public void buildMonitor() { computer.setMonitor("12英寸 1280*800"); } @Override public void buildOS() { computer.setOs("Windows 7 Home版"); } @Override public Computer getResult() { return computer; }}
ComputerDirector.java
package com.DesignPattern.Creational.Builder;public class ComputerDirector { ComputerBuilder builder; public T410 constructT410(){ builder=new T410Builder(); builder.buildCpu(); builder.buildRam(); builder.buildHardDisk(); builder.buildGraphicCard(); builder.buildMonitor(); builder.buildOS(); return (T410)builder.getResult(); } public X201 constructX210(){ builder=new X201Builder(); builder.buildCpu(); builder.buildRam(); builder.buildHardDisk(); builder.buildMonitor(); builder.buildOS(); return (X201)builder.getResult(); }}
ComputerTest.java
package com.DesignPattern.Creational.Builder;public class ComputerTest { public static void main(String[] args){ ComputerDirector director=new ComputerDirector(); Computer t410=director.constructT410(); System.out.println(t410); System.out.println("-------------------------------"); Computer x201=director.constructX210(); System.out.println(x201); }}
1 0
- Design Pattern_Java:Builder Pattern
- Design Pattern 1-builder
- [Design Pattern]:Builder
- design pattern : Builder
- Delphi Design Pattern - Builder
- Design Pattern--Builder
- Design Pattern:Builder
- Design Pattern: Builder 模式
- Java Design Pattern: Builder
- Design Pattern - Builder(C#)
- Builder design pattern in java
- design pattern——builder
- Design Pattern - Creational Patterns - Builder Pattern
- 生成器设计模式(Builder Design Pattern)
- 【Design Pattern】Builder模式的一种实现
- design pattern Builder 建造者设计模式
- Design Pattern: Builder Pattern(建造者模式)
- 设计模式4 - 构建者模式Builder Design Pattern
- poj-1836 Alignment
- Android中IntentService的原理及使用
- 导航控制器的学习
- android学习 关于用intent 传递数据
- AJAX POST 与 GET 的区别 && HTTP
- Design Pattern_Java:Builder Pattern
- 解决传中文参数乱码的问题
- Key-Value Observing
- poj 2965 The Pilots Brothers' refrigerator
- 别等待-想到什么就去做
- 使用php语句将数据库*.sql文件导入数据库
- [PHP] php基础
- Linux内核中进程上下文和中断上下文的理解
- 回文链表(Java)