设计模式(建造者模式)
2015-06-12 14:14
471 查看
建造者模式用于创建相对复杂,组成较多的对象。它包括几类角色:
Product: 待被创建的对象,本例中是Table
builder:创建对象方法的抽象,本例中是TableBuilder
ConcreteBuilder:具体某个创建的实现,本例中是TableBuilderImpl
Director:封装builder接口
类图关系如下:
代码如下:
Table
TableBuilder
TableBuilderImpl
Director
APP
Product: 待被创建的对象,本例中是Table
builder:创建对象方法的抽象,本例中是TableBuilder
ConcreteBuilder:具体某个创建的实现,本例中是TableBuilderImpl
Director:封装builder接口
类图关系如下:
代码如下:
Table
package com.example; public class Table { private String head; private String content; private String footer; public String getHead() { return head; } public void setHead(String head) { this.head = head; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getFooter() { return footer; } public void setFooter(String footer) { this.footer = footer; } public String getTable(){ return this.head + "_" + this.content + "_" + this.footer; } }
TableBuilder
public interface TableBuilder { public TableBuilder setTableHead(String head); public TableBuilder setTableContent(String content); public TableBuilder setTableFooter(String footer); public Table builder(); }
TableBuilderImpl
package com.example; public class TableBuilderImpl implements TableBuilder { private Table table; private static final String TYPE = "TYPE1"; public TableBuilderImpl(){ table = new Table(); } @Override public TableBuilder setTableHead(String head) { table.setHead(TYPE + head); return this; } @Override public TableBuilder setTableContent(String content) { table.setContent(TYPE + content); return this; } @Override public TableBuilder setTableFooter(String footer) { table.setFooter(TYPE + footer); return this; } @Override public Table builder() { return table; } }
Director
public class Director { private TableBuilder builder; public Director(TableBuilder builder){ this.builder = builder; } public Table Builder(){ return builder.setTableHead("head") .setTableContent("content") .setTableFooter("footer") .builder(); } }
APP
public class App { public static void main(String[] args) { Director direct = new Director(new TableBuilderImpl()); Table table = direct.Builder(); System.out.println(table.getTable()); } }
相关文章推荐
- arcmap生成泰森多边形
- Xcode进行ARC设置
- java 正则表达式入门(一)
- 冒泡排序(C++语言描述)
- nRF51822 LRC(32.768K) 内部RC和外部晶振的设置
- [OpenGL][SharpGL]用Polygon Offset解决z-fighting和stitching问题
- Heartbeat+DRBD+MySQL高可用架构部署
- 类dota战斗机制记录——基本系统
- OC三大特性之--继承
- c# 特性/属性(Attribute) 以及使用反射查看自定义特性
- 马云:创业这些年犯下的四个大错
- JAVA笔记
- 6 适配器模式(Adapter)
- 7 装饰模式(Decorator)
- 8 代理模式(Proxy)
- 9 外观模式(Facade)
- Trie树
- 免费的编程中文书籍索引
- windows系统下virtualbox+host only+centos netinstall安装注意事项
- jQuery - Deferred 对象使用