学习揣摩和应用设计模式已经好一阵子了,《道法自然:面向对象实践指南》这边书给我了很大的帮助,力荐,生动易于Get。
起因是混乱的原始项目,接手起来倍感烦躁,消息传递类与类之间的关系都极其混乱。
运用观察者模式,终于斩断了一些错综交杂的毛线团。从此我开始了设计模式的学习和应用,很多设计模式的书,真的很难看明白。结合实际项目,更能体会。
最近对于观察者模式的认识又加深了一步。
写了个全局主题类GlobalSubject,定义变量观察者列表observerList,实现三个方法Attach、Detach、Notify,这个类用单件模式实现,就是全局变量啦,再写个这个类的接口GlobalSubjectAPI,完美。
这样写的好处是什么呢?首先,不用每个需要发消息给UI的类都继承主题抽象类。其次,消息都集中在一个模块,独立不混乱。整个APP就这么一个集中管理的主题类,架构非常清晰。
需要接收消息并做处理的UI类就继续Observer观察者父类,根据需要对消息分别处理,实现UI和实体类的分离。
在UI创建的时候,Attach到Observer列表,UI析构函数中要Detach,不然UI销毁了,Observer列表访问就会发生崩溃的情况。
这个实现方式是我自己琢磨的,可能也有其他人这么做吧,分享出来。终归是站在前人的肩膀上琢磨出来的。这种实现方式真的妙处多多,设计模式学好了,真的非常有用。