第十三章 建造者模式
2016-04-03 16:27
316 查看
建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时适用的模式。
import java.util.LinkedList; import java.util.List; /** * Created by hero on 16-4-3. */ public class Product { private List<String> parts = new LinkedList<>(); public void add(String part) { parts.add(part); } public void show() { for (String p : parts) { System.out.print(p + "\t"); } System.out.println(); } } /** * Created by hero on 16-4-3. */ public abstract class Builder { public abstract void buildPartA(); public abstract void buildPartB(); public abstract Product getResult(); } /** * Created by hero on 16-4-3. */ public class ConcreteBuilder1 extends Builder { private Product product = new Product(); @Override public void buildPartA() { product.add("a"); } @Override public void buildPartB() { product.add("b"); } @Override public Product getResult() { return product; } } /** * Created by hero on 16-4-3. */ public class ConcreteBuilder2 extends Builder { private Product product = new Product(); @Override public void buildPartA() { product.add("x"); } @Override public void buildPartB() { product.add("y"); } @Override public Product getResult() { return product; } } /** * Created by hero on 16-4-3. */ public class Director { public void Construct(Builder builder) { builder.buildPartA(); builder.buildPartB(); } } public class Main { public static void main(String[] args) { Director director = new Director(); ConcreteBuilder1 concreteBuilder1 = new ConcreteBuilder1(); ConcreteBuilder2 concreteBuilder2 = new ConcreteBuilder2(); Product product = null; director.Construct(concreteBuilder1); product = concreteBuilder1.getResult(); product.show(); director.Construct(concreteBuilder2); product = concreteBuilder2.getResult(); product.show(); } }
相关文章推荐
- 9. Smarty3:模版继承
- android设置 默认wifi
- 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B),win32 error 50
- 第五周学习进度表
- linux命令行下载jdk
- 数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡器(转)
- 梳理caffe代码io(十三)
- DexIndexOverflowException两种情况的解决方法
- YD 督促训练 判断这年五一几天假期
- 最大连续和
- Android设计模式应用---适配器模式
- jQuery实现图片轮播特性。使用animate函数
- MongoDB用户权限设置
- 拥塞避免算法和慢启动算法的共同作用
- 重建二叉树
- java学习笔记(五)
- Java对XML文档的解析
- MFC框架仿真<一>
- Tsinsen A1109 三角形
- Microsoft Azure中TrafficManager (流量管理器)的路由方式