设计模式详解(三)

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()){
			...
		}


proxy:代理模式
比如某个业务需要多个service的合作。这时候有一种解决方案是在action里直接注入这些service。
另外一种方法是:在service层上面再加一层 serviceProxy。 这样action只要调用注入service代理就OK了。这就是代理模式。


你可能感兴趣的:(java)