• 设计模式记录:观察者模式(Observer)


          1.经典的例子:出版社+订阅者=观察者模式

          1.1 简要介绍经典例子

          *出版社出版图书  *订阅者向出版社订阅图书,只要你一直都订阅者图书,那么图书就会每月都送到你的手上(月刊) * 当你不想看这个图书了(比如现在质量越来越差的《程序员》),那么你就可以取消掉这个订阅  * 只要出版社还在,那么就肯定会有人去订阅或者取消订阅的(即使再差的质量,还是会有人去读《程序员》)

          1.2 引出生活中烦人的例子(公司“党兄”的悲惨遭遇)

          中国移动与中国移动的客户不可调和的矛盾,在不经意间订阅了不知道是第三方和中国移动合作的还是中国移动的那种用卑劣手段来促进客户消费的服务信息。

    中午一起出去吃饭,“党兄”很纳闷,明明说是免费的,按了下去就扣我7.5元钱。杯具啊。我也就调侃一句:谁让你的手机这么好,其实手机嘛能电话,能短信就OK

    了,不需要那么多功能,啥上网,啥彩信。都是“脱了衣服的美人前面的一个坑”--让你不知不觉的就掉进去。

          OK,手机用户与移动的不可调和的矛盾。这就是一个观察者模式。

          2.手机用户与移动公司不可调和的矛盾

          2.1 发掘观察者和主题

          在这里移动公司的服务信息就是主题(Subject),手机客户就是观察者(Observer)了。“党兄”就是一个观察者。移动公司有了啥能够“诱骗”到客户的金钱的手段(服务信息)就通知我们“党兄”这样的受害者(手机客户)。当然不全怪移动,也或许是第三方利用移动的中介来发送的。

          党兄在那边不经意间掉入了那个坑,当然如果他愿意傻傻的继续享受那每个月7.5元的服务费,那也无妨,当然移动也不会闲着,一有新的服务就还是会继续发过来给你,让你再次陷入那美丽的谎言中。移动一天不灭,服务就一月不断。

          面对这样的惨剧,党兄当然会非常愤怒,NND中国移动,我要取消那可恶的服务,从此以后不要再发送服务信息过来了。OK,我就是关闭我的GPRS功能,从此不再接受服务信息。OK。就这样悲剧不会再继续发生了。

          3. 简要UML图如下:

          4.程序实现如下:

  • 相关阅读:
    字符串和正则表达式
    委托和事件
    集合
    C#基础
    Pwnable中的passcode解题记录:
    DevExpress插件中GridView控件界面显示风格的保存与加载
    地区代码表(利用Hashtable实现)
    关于DevExpress插件中LookUpEdit控件的快速搜索列的定位问题
    C#实现PictureBox控件的动态添加及在每个图像左上角添加一个复选框
    Android4.4新的特性,在应用内开启透明状态栏和透明虚拟按钮。
  • 原文地址:https://www.cnblogs.com/UpThinking/p/1706852.html
Copyright © 2020-2023  润新知