设计模式之Visitor模式的应用(一)
最终的代码示例
interface ErrorBase{ public void handle(ErrorHandler handler);}class DBError implements ErrorBase{ public void handle(ErrorHandler handler) { handler.handle(this); }}class CommError implements ErrorBase{ public void handle(ErrorHandler handler) { handler.handle(this); }}interface ErrorHandler { public void handle(DBrror dbError); public void handle(CommError commError);}class GUISys implements ErrorHandler{ public void announceError(ErrorBase error) { error.handle(this); } public void handle(DBError dbError) { /* 通知用户界面进行有关数据库错误的处理 */ } public void handle(CommError commError) { /* 通知用户界面进行有关通信错误的处理 */ }}class LogSys implements ErrorHandler{ public void announceError(ErrorBase error) { error.handle(this); } public void handle(DBError dbError) { /* 通知日志系统进行有关数据库错误的处理 */ } public void handle(CommError commError) { /* 通知日志系统进行有关通信错误的处理 */ }}
?
回页首
7、结论
设计模式并不仅仅是一个有关特定问题的解决方案这个结果,它的意图以及它的动机往往更重要,因为一旦我们理解了一个设计模式的意图、动机,那么在设计过程中,就很容易的发现适用于我们自己的设计模式,从而大大简化设计工作,并且可以得到一个比较理想的设计方案。
另外,在学习设计模式的过程中,应该更加注意设计模式背后的东西,即具体设计模式所共有的的一些优秀的指导原则,这些原则在 参考文献[1]的第一章中有详细的论述,基本上有两点:
发现变化,封装变化优先使用组合(Composition),而不是继承如果注意从这些方面来学习、理解设计模式,就会得到一些比单个具体设计模式本身更有用的知识,并且即使在没有现成模式可用的情况下,我们也一样可以设计出一个好的系统来。
<!-- CMA ID: 53318 --><!-- Site ID: 10 --><!-- XSLT stylesheet used to transform this file: dw-article-6.0-beta.xsl -->
文章来源:http://www.ibm.com/developerworks/cn/java/l-dpstruct/part1/index.html?ca=drs-