设计模式详解(三)
facade:门面模式
门面模式比较简单,概要。即将一个复杂问题封装起来,只对外留几个比较简单的口。
比如前文提到的数据库连接。面向对象语言的天生一个特性就是封装。所以很适合门面模式。
代码:略
strategy:策略模式
把一个复杂问题分拆,成几种情况,各种情况的算法,提取出来。有一点点类似门面模式
代码:略
chain of Responsibility:责任链模式
java check exception 的设计是最典型的 责任链模式。
自己解决,自己解决不了,往下继续抛出。
此设计模式的缺点就是 check exception的缺点。即:太啰嗦。这就是为什么spring等框架都把check exception转换成 runtimeException 的原因了。这里不细讨论。
代码:略
observer:观察者模式
有名发布-订阅模式。
这个在swing awt 上应用的应该比较多。比如鼠标监听,j2ee里面的监听器应该也属于观察者模式的范畴。
command:命令模式
命令模式在struts中有着广泛的应用。传统的servlet只有一个service方法,用命令模式可以把很多请求写在一个service中。
iterator:迭代器模式
迭代器模式为容器而生,迭代的时候,不用暴露容器里面元素的细节。
比如java collection 中的应用。
Iterator<E> it = list.iterator();while (it.hasNext()){...}