(6)设计模式笔记[Builder模式]
2011-04-28 15:16
232 查看
package com.vatana.bulider.framework; /** * Builder类就像是砖,瓦,钢筋,水泥 * 一切基本元素。 * 这里展示4个方法:执行前,执行中,执行后,执行结果 * @author Vatana */ public abstract class Builder { public abstract void on_before(String msg); public abstract void on_do(String msg); public abstract void on_after(String msg); public abstract String getResult(); }
package com.vatana.bulider; import com.vatana.bulider.framework.Builder; /** * 创建样式 * 具体的元素,如果说Builder是砖,瓦,水泥 * 那这里就是指什么样的砖,什么样的瓦,什么牌的水泥, * 已经见到实物,一般不会改变了 * @author Vatana */ public class TextBuilder extends Builder{ private StringBuffer sb = new StringBuffer(); @Override public void on_before(String msg) { sb.append("<begin>"); sb.append(msg); sb.append("</begin>/n"); } @Override public void on_do(String msg) { sb.append("<do>"); sb.append(msg); sb.append("</do>/n"); } @Override public void on_after(String msg) { sb.append("<after>"); sb.append(msg); sb.append("</after>/n"); } @Override public String getResult() { return sb.toString(); } }
package com.vatana.bulider; import com.vatana.bulider.framework.Builder; /** * Director类是设计师,建筑师,导演 * 它定义了Builder类中各个元素的执行顺序 * 需要修改时直接修改此类或直接创建新类,不会影响其它逻辑 * @author Vatana */ public class Director { private Builder builder; public Director(Builder builder){ this.builder = builder; } public String constract(){ builder.on_before("on before,init something."); builder.on_do("on do, excute something."); builder.on_after("on after,end something."); return builder.getResult(); } }
package com.vatana.bulider; import com.vatana.bulider.framework.Builder; /** * 用盖楼的概念认识builder模式。 * 这个模式是众多模板引擎的基础。 * 与Template模式很接近, * 不同的是,Template在父类定义元素种类和结构,然后在子类确定实际元素,结构是单一的、不可变的、 * 而builder只在父类定义元素种类,在子类定义实际元素,在另外一个类(Director)中定义结构。这样的结构具有多样性、可变性。 * * 在面向对象设计中,“谁知道哪个部分”相当重要。要注意哪个类,能够使用什么方法。 * 在这个例子中 Test类就不需要知道Builder类都有什么方法,只需要Director知道就行 * 而Director也只需知道有那几个方法,具体怎么执行,交给TextBuilder * @author Vatana */ public class Test { public static void main(String[] a){ Builder tb = new TextBuilder(); Director director = new Director(tb); String re = director.constract(); System.out.println(re); } }
运行结果
run:
<begin>on before,init something.</begin>
<do>on do, excute something.</do>
<after>on after,end something.</after>
成功生成(总时间:1 秒)
相关文章推荐
- 设计模式 笔记 生成器(建造者)模式 Builder
- Builder设计模式学习笔记
- 设计模式学习笔记(四)——Builder生成器模式
- 设计模式 笔记 生成器(建造者)模式 Builder
- 【HeadFirst 设计模式学习笔记】16 建筑者(Builder)模式拾零
- 设计模式学习笔记(四)——Builder生成器模式
- 设计模式笔记(1 ABSTRACT FACTORY & BUILDER)
- 设计模式笔记(1 ABSTRACT FACTORY & BUILDER)
- 设计模式C++学习笔记之十(Builder建造者模式)
- Builder生成器(创建型设计模式)面向对象设计模式纵横谈讲座笔记之四
- 设计模式学习笔记--Builder生成器模式
- 步步为营 .NET 设计模式学习笔记 十、Builder(建造者模式)
- [设计模式笔记]一. 创建型模式--4.Builder模式(一)
- 设计模式学习笔记(四)——Builder生成器模式
- 设计模式学习笔记(四)——Builder生成器模式
- 设计模式学习笔记(五):建造者模式【Builder Pattern】(一)问题提出
- 设计模式笔记17:建造者模式(Builder Pattern)
- 设计模式C++学习笔记之十(Builder建造者模式)
- 设计模式学习笔记八:建造者模式(Builder Pattern)
- 设计模式之Builder 的学习笔记