【二】设计模式——建造者模式(Builder Pattern)
2016-11-26 21:22
531 查看
定义
建造者模式(Builder Pattern):Separate the construction of a complex object from its representation so that the same construction process can create different representations.
译: 将一个复杂对象的构造与它的表示分离,使得同样的构建过程可以创建不同的表示。
类图
图中的设计使用到了多态,其实我们类似写一个接口或抽象类,然后声明一些构造一个事物的所有属性方法,然后再实现不同的类,填充不同的属性值,这样,就可以构造出不同的产品来~
在开发中却比较少的严格遵循这种结构,比如安卓里面的AlertDialog.Builder使用的方法却比较常见。
优缺点及注意事项
1. 优点:
更好的封装内部结构,对使用者来说放心的去构造就好,不用担心顺序之类的问题,最后create就可以生成想要的事物。2.缺点:
会产生过多的Builder对象及Director对象,消耗内存3.注意事项:
设计好类的结构,避免过多的产生无用的类和临时对象,最后生成Product的时候,考虑好各种属性的default值使用场景
类的属性很多,构造比较麻烦,参数过多,例如AlertDialog.Builder、StringBuilder不同的执行顺序,产生不同的结果
实现方式
这里就不去实现上面类图的结构了,分享一下StringBuilder的方法(简单常用):先来看一下平时我们的使用方式:
StringBuilder sb = new StringBuilder(); sb.append("string").append(1).append(true).append(1.0f);
通过使用方式来看,可以传递各种类型的值,然后使用这种链式的调用,使代码看起来非常简洁调用也很方便,很好的将各种重载的方法串到一起,然后得到我们最终的结果。ps:当然上面的代码可以优化为String 的+进行拼接
那里面是怎么实现的呢?
先随便看一下append方法:
public StringBuilder append(String str) { super.append(str); return this; }
可以注意到:
return this,就是这个让我们可以进行链式调用,而其他的跟普通的没有什么两样,因此我们就可以模仿这种方式,构造参数较多的自定义类,例如之前的一篇博文实现:http://blog.csdn.net/yk3372/article/details/53053518 就是使用了这种方式,这样最后我们只要调用最后构造方法toString或create之类的方法,就可以得到我们想要的真实对象。
原文地址:http://blog.csdn.net/yk3372/article/details/53354394
相关文章推荐
- 设计模式----建造者模式(Builder Pattern)
- 设计模式-建造者模式(Builder Pattern)
- 设计模式----建造者模式(Builder Pattern)
- 设计模式——建造者模式(BuilderPattern)
- NET设计模式4--建造者模式(Builder Pattern)
- 乐在其中设计模式(C#) - 建造者模式(Builder Pattern)
- 我所理解的设计模式(C++实现)——建造者模式(Builder Pattern)
- C#设计模式(5)——建造者模式(Builder Pattern)
- C#设计模式(5)——建造者模式(Builder Pattern)
- .NET设计模式-建造者模式(Builder Pattern)
- 设计模式学习——建造者模式(Builder Pattern)/生成器模式
- 乐在其中设计模式(C#) - 建造者模式(Builder Pattern)
- 六.创建型设计模式——Builder Pattern(建造者模式)
- 设计模式-建造者模式(Builder Pattern)
- 设计模式学习笔记——建造者模式(Builder Pattern)
- 乐在其中设计模式(C#) - 建造者模式(Builder Pattern)
- 设计模式---建造者模式(Builder Pattern)
- 建造者模式(Builder Pattern)----设计模式
- 设计模式——建造者模式(BuilderPattern)
- 设计模式学习总结-建造者模式(Builder Pattern)