大话设计模式笔记 建造者模式
2015-09-25 22:48
337 查看
建造者模式(Builder),将一个复杂对象的构建与它的表示分离,是的同样的构建过程可以创建不同的表示。
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,用户只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需知道了。
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,用户只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需知道了。
package Builder; import java.util.ArrayList; /** * 产品类,由多个部件组成 * */ public class Product { ArrayList<String> partList = new ArrayList<String>(); // 添加产品部件 public void add(String part) { partList.add(part); } public void show() { System.out.println("create product"); for (String string : partList) { System.out.println(string); } } }
package Builder; /** * 抽象建造者类,确定产品由两个部件PartA和PartB组成 * 并声明一个的到产品建造后结果的方法getResult * */ public abstract class Builder { public abstract void buildPartA(); public abstract void buildPartB(); public abstract Product getResult(); }
package Builder; /** * 具体建造者类 * */ 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; } }
package Builder; public class Director { public void construct(Builder builder) { builder.buildPartA(); builder.buildPartB(); } /** * 客户端代码,客户不需要知道具体的建造过程 */ public static void main(String[] args) { Director director=new Director(); Builder b1=new ConcreteBuilder1(); director.construct(b1); Product p1=b1.getResult(); p1.show(); } }
相关文章推荐
- 黑马程序员——JAVA之面向对象(一)
- 字符串右移
- 类似于微信的在一个Activity中界面的相互切换
- Light oj 1157 - LCS Revisited(lcs 个数 记忆化搜索)
- 将容器中的零放在容器的后面,前面的数据顺序不变
- 转:cygwin简单应用及Nutch之Crawler工作流程
- jQuery EasyUI API 中文文档 - 消息框(Messager)
- 阶段性总结
- intellij IDEA如何将Web项目导出为WAR包,直接部署到tomcat或者Jboss上
- The Swift Programming Language 翻译 —— 错误处理
- 滴滴第一题
- HDU 5443 The Water Problem(RMQ)2014 多校
- [Android基础]增强eclipse中的自动提示功能
- smarty实现缓存
- codeforces #321 div 2 B. Kefa and Company(尺取法)
- UEFI 装 Debian
- linux 路由表设置(双网卡)
- 在CentOs6.5下安装Python2.7.6和Scrapy
- hadoop初探
- 求二叉树的叶子数