大约是大三吧, 学习面向对象。 在课程的后期, 老师逐渐的介绍到了设计模式。 甚至现在还模模糊糊的记得几个, 工厂模式, 观察者模式, 适配器模式什么的。
课程中间, 有一个实验, 要求设计一个 MP3, 当然, 要用上适当的设计模式。 我苦思冥想如何在 JAVA 中播放音乐, 当时的目标是尽可能的简单,不过还是在实现音乐的播放上耗时最多。 最后套上一个观察者模式, 就完美的完成了一个小实验。 我已记不得当初做这个实验室到底如何用的观察者模式, 但是一个很深的印象是 : 这个观察者模式, 没想的这么简单。
这一点, 多年之后我仍然记忆犹新, 就像编译器, 至今我仍希望能写出来。 对此, 我一直在在意。 近日, 师兄让我搭建一个可控的视频服务器, 最后的结论是 dss 比较好,在阅读 dss 的源代码中, 看到了 reactor design pattern 的使用, 又推及到了 观察者模式。 10分钟看完一个介绍, 觉得好简单呢。
可能当时对编程的理解还比较浅, 脑子中的回数少, 所以觉得难。另一个问题是, 我当初面对的是一个实际的编程问题, 稍大的项目总是会让人感觉到有些不可控, 大脑的“内存”不够用。 今天我面对一个很简单的例子, 认为其简单, 也是因为纸上谈兵。
这里再分析一下观察者模式。我觉得观察者模式的核心在于类的继承。被观察者的行为是一定的, 而面对变化, 观察者的行为却大可不同。 这种逻辑的实现在于对同一个 update 方法, 不同的观察者有不同的实现。 这就在于继承, 继承使得同一个方法, 在不同的子类中拥有不同的实现。
我好想做一个有意思的 PPT, 教一下别人观察者模式, 我喜欢面向对象。