我一直是个宗诚的OOP信徒,或者说,是OOP的极左完美主义者。半年前,有幸拜读GOF的《Design Pattern》(以下简称《GOF》),和《PSA》,有茅塞顿开之快。作为一个刚毕业不到一年的程序员,我接手的都是一个人就可以完成的小项目。但在每个项目中,我都借鉴了大师们的经验(模式)来建模。
前段时间。终于有机会和一位老员工合作项目。项目中要用到一个分布式的事件响应服务。在事件的类型上,我和他达成了共识,但在事件的响应方面。我尝试着向他推销满足DEMO版需求的反应器/观察者模式。
一开始,我在纸上画响应器注册、反应器处理事件的框图,向他解释这个模式的实现流程。沟通过程中,我发现气氛压得本来就表达能力已经有限的我越来越不能清晰地表达这个模式。我的思维越混乱,他越是追问我。后来我有点恼火了。幸好,这时他让我用示例代码来解释……终于,他懂明白了怎样应用我的反应器。
总结一下,像《GOF》所讲的。模式除了他本身的功能外,还有一个十分重要却没有得到足够重视的功能:交流术语。的确,如果程序员都了解一些常用模式的话。我们的交流会事半功倍。