C#.架构设计 课堂(一)C#设计模式(23种设计模式) :观察者模式

https://www.cnblogs.com/abcdwxc/archive/2007/10/30/942834.htmlC#设计模式(23种设计模式)

https://ke.qq.com/course/28986

观察者模式

【日常应用1】

       比如是群主,在群里面发了一条通知。群里面在100个人看到这条消息后,会做出应对,或者执行这条消息,或者忽略这条消息等等。

【日常应用2】

      比如生活中猫叫一了一声,老鼠听到后就跑掉、孩子听到之后就会哭、狗听到之后就会叫。。。。(老鼠、孩子、狗等等就是观察者)

 

猫内部有这些对象。我们希望在猫这个方法的内部,尽可能的少变动代码。比如再来一个小偷,小偷听到声音后,就会隐藏:

    你可能会注意到,这样的代码扩展性太差,每次我们扩展一个功能时(比如增加一个小偷对象), 都要修改猫的方法。这样的代码可扩展性太差了。同样的,若是我们调整狗叫、老鼠逃跑等等功能的顺序,程序是需要多次修改的,很不稳定。

       因为猫的这个类,依赖的太多的内部类(狗类等等),导致可扩展性、不稳定。那么如何提高猫这个类的可扩展性、稳定性呢?

       定义一个接口即可,这个接口有个抽象的Action方法。然后在每个狗啊,老鼠等等对象中,实现Action方法。那么Action方法里面怎么实现呢,请看下面的截图:

    其实,在上面的几个截图中,我们把所有的动作都封装在了集合_ObserverList中。那么我们在主程序里面,该如何通过集合快速的增删功能动作、或者为不同的功能排序呢?

      你可以看看,如何我们需要添加一个Brother对象,我们可以在主程序进行初始化即可。而不需要变动其他类,这样更方便、更快。

       以上就是增加或变动动作顺序的功能。

       若是我想删除一个动作呢,怎么办?

    好了,我们在主程序中,把这个删除函数用起来:

    好了,我们要定义多个猫,并且每个猫有不同的动作,怎么办呢?

         好了,我们也可以定义事件,通过事件添加方法来执行动作。

      那么,事件的写法有什么好处呢?它可以很方便为我们添加多个对象的方法,比如多个狗的方法。 比如再添加一个狗。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值