设计模式学习之路-建造者模式
来源:互联网 发布:vulcan软件 编辑:程序博客网 时间:2024/05/01 14:27
建造者模式,使我们经常提到一个模式,而且很多地方都用到了,比如AlertDialog创建使用Builder。这也是建造者模式的体现,那么我们平时在写代码的时候也可以使用这个方式,来梳理代码逻辑。
建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者的UML类图
基本代码
absract class Builder{ public abstract void BuilderPartA(); public abstract void BuilderPartB(); public abstract Product GetResult();}
<pre name="code" class="java">class ConcreteBuilder1 extends Builder{private Product product = new Product(); @Override public void BuilderPartA(){ product.add("A"); }@Override public void BuilderPartB(){ product.add("B"); }@Override public Product GetResult(){ return product; }}
</pre><pre name="code" class="java">class Director{ public void Construct(Builder builder){ builder.BuilderA(); builder.BuilderB(); }}
class Product { List<String>parts = new ArrayList<String>(); public void add(String a){ parts.add(a); } public void show(){ for(String : parts){ Log.i("TAG",parts.get(i)); } }}
class ConcreteBuilder2 extends Builder{private Product product = new Product(); @Override public void BuilderPartA(){ product.add("X"); }@Override public void BuilderPartB(){ product.add("Y"); }@Override public Product GetResult(){ return product; }}
客户端
static void main(){ Director d = new Director(); Builder b1 = new ConcreteBuilder1(); Builder b2 = new ConcreteBuilder2(); d.construct(b1); Product p1 = b1.Getresult(); p1.show();}我们以建造小人为例子。先创建一个抽象小人父类,里面有创建头,身体,手,脚等抽象方法。然后在新建一个具体的胖小人实体类和一个瘦小人实体类。新建一个Director指挥者,在里面有个创建人类的方法,调用抽象类的方法,这样只要通过指挥者创建人类,客户端不需要创建人类的复杂过程,只需要调用指挥者类的创建方法就可以了。
看到这儿不禁让我想起了一个相似的模式,那就是策略模式。感觉有点异曲同工之妙。
这里有个造小人的代码例子,很简单。想看呢就下下来看看。
git:https://github.com/SingleShu/BuilderModel
0 0
- 设计模式之建造者模式学习
- 设计模式学习之路-建造者模式
- 设计模式学习笔记之建造者模式
- 学习设计模式之禅——建造者模式
- 设计模式学习笔记之建造者模式
- C#设计模式学习小结之七 建造者模式
- 设计模式学习笔记之建造者模式
- 设计模式学习(四)之建造者模式
- 设计模式之建造者
- 设计模式 之 建造者
- 设计模式之建造者
- 菜鸟之路-浅谈设计模式之建造者模式
- 设计模式学习—建造者模式
- 设计模式学习(七):建造者模式
- 设计模式学习--建造者模式
- 设计模式学习笔记-建造者模式
- 设计模式学习笔记--建造者模式
- 设计模式学习--建造者模式
- Google Guava组件
- 云计算的三种服务模式:IaaS,PaaS和SaaS
- 第二周项目3-体验复杂度
- 九大Java性能优化工具
- JAVAWEB三大组件之过滤器
- 设计模式学习之路-建造者模式
- 解析异步消息处理机制、AsyncTack
- 深入理解yarn
- Codeforces Round #287 (Div. 2) E. Breaking Good(最短路、dp)
- 建议52:及时释放资源
- csu 1723
- VS2010搭建SVN中的VisualSVN
- Hadoop学习之二《Hadoop环境伪分布式环境搭建》
- 12款最常用的Java测试工具