观察者模式相关的文章:
帮你理清观察者模式和委托、事件的区别
委托相关的文章:
帮你理清C#委托、事件、Action、Func
这篇文章主要就是给上次讲观察者模式的时候提到的发布者订阅者模式来填个坑,看过之前文章的同学应该还记得我说过,观察者模式其实还是存在了耦合问题,那么这次的文章就在之前的基础上,我把他改成订阅者发布者模式,大家来一起看看有什么区别吧!
#首先来看一下观察者模式的一位观察者 这位观察者首先要实现一个观察需要实现的接口,同时还持有了被观察对象的引用,因为要用来从被观察者那里添加和移除自己这个观察者,添加了自己为观察者之后,被观察者那边就可以调用通知所有观察者的方法来告诉这些观察者们去执行自己需要做的事,为了防止有些同学忘记了被观察者的代码,我也在下面贴一下。
#回顾完了之前的代码,我现在开始改成订阅者发布者模式 废话不多说,先来看我第一步做了什么 我创建了一个事件管理器,我们再来看看这时候之前的那个观察者现在代码变成什么样子了 大家可以对比下之前的代码,这个时候去掉了对被观察者的引用,同时使用委托事件订阅了自己的方法,完全解耦 这时候其实已经不是观察者模式了,应该叫订阅者和发布者,最后我把之前的被观察者改为发布者之后的代码也贴出来给大家看下 可以对比下之前的Player代码,是不是精简了许多,哈哈哈,这就是不同设计模式的魅力,对代码产生的影响!
这里我用了非常简单的方式进行了修改,具体实现的时候,还会有很多需求,比如其他的对象订阅玩家掉血事件,可能会需要一些参数,那么开始设计这个事件的Action委托的时候就需要考虑到有哪些参数需要被传递,在定义的时候就得加上,这样订阅者就可以拿到自己需要的参数啦,我写个简单的例子~大家看看就好,同时我也是一个小码农,只是想把自己学习过程用通俗易懂的方式讲出来,想让更多的人理解代码的魅力~有说的不对的地方,大佬们一定要留言告诉我!
787

被折叠的 条评论
为什么被折叠?



