或许第四篇“设计模式应用实践”最能体现本书的价值。它仍然是设计模式项目实践的延续,凸现其价值的原因在于这些项目实践,均是我亲自参与设计与开发的项目。无疑,它们的实现更具有现实的指导意义。我常常在想,究竟是什么阻碍了程序员对设计模式的理解?他们的普遍意见是不患设计模式之艰深难懂,而患设计模式运用之困难重重。怎么将设计模式运用到实际的项目开发中,是他们面对的最大问题。所谓“读书百遍,其义自现”,我想,唯一的解决之道就是实践,实践,再实践。西方有谚语说“Practice make perfect”,翻译为中文就是“熟能生巧”。然而,盲目的实践终归是不成的,我们需要向他们展示一些已经实现了的示例。在对设计模式进行讲解时,我们固然需要示例的精巧、生动与形象,但最重要的特质还是要与实际的开发结合,否则,再贴切的示例都会成为“空中楼阁”。如果仅仅追求比喻的“一鸣惊人”,或许能够加深程序员对设计模式的理解,但对于如何在项目开发中实际运用它们,仍然是一片茫然。本篇论述的设计模式包括Abstract Factory模式、Builder模式、Command模式、Chain Of Responsibility模式、Observer模式、Proxy模式、Strategy模式、Template Method模式以及Bridge模式。
除了被致谢的人之外,这一节内容往往被读者忽略,以至于漠视了所有支持我、帮助我的家人与朋友。所以,我希望将这一部分变得更有价值一些。为了不背离本书的核心精神,我引入设计的原则来阐述。 致谢的方式有很多种,例如口头致谢,为对方献上鲜花或者赠送礼金,这相当于一种致谢策略。从软件设计的角度来看,我们可以定义如下接口: public interface IAcknowledge { void Acknowledge(); }
如果要实现口头致谢,可以定义如下的类,并实现IAcknowledge接口: public class Appreciation:IAcknowledge { public void Acknowledge() { Console.WriteLine("Thank you!"); } }
献花与赠送礼金的实现则如下所示: public class PresentFlowers:IAcknowledge { public void Acknowledge() { Console.WriteLine("To present flowers."); } } public class Reward:IAcknowledge { public void Acknowledge() { Console.WriteLine("Reward payment."); } }