使用设计模式改善程序结构(一)
最终的设计的程序结构图
最终的代码示例
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),而不是继承
如果注意从这些方面来学习、理解设计模式,就会得到一些比单个具体设计模式本身更有用的知识,并且即使在没有现成模式可用的情况下,我们也一样可以设计出一个好的系统来。