• 设计模式二三话10月份


    2012年9月30日

    15:30

    关键词:补充基础的uml术语 ,还有用过的观察者模式

    设计模式二三话-10月份

    理解设计模式-一个长期的过程-23=5+7+11 创建型+结构型+行为型

    至今比较熟悉的有:

     

    用过:单列模式 ,观察者模式,  适配器模式,。。

    每次还是拿着那个图看吧:我想

     

     

    这次就说观察者模式吧哈。

     

    ljee说我没有理解观察者,

     

     

    首先分清楚 3uml 关系把:

     

    一个 聚合(aggregation) ,一个合成(composition ,前面两个箭头都有尾巴,并且合成尾巴是实心的,就如他的定义样,部分和整体的生命是一样的,注意是有生命的。

     

    还有个关系叫做是 关联(association),在 观察者模式中就用到这个,代码上看起来就是一个成员变量罢了,在uml图上看起来就是一个箭头,没有尾巴。

    clip_image001

    clip_image002

    clip_image003

     

     

     

    定义:观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新


    类图:

    clip_image001

    附:visio原图


    特点:

    1、观察者定义了对象之间一对多的关系

    2、主题(即被观察者)用一个共同的接口来更新观察者;

     

    3、观察者和被观察者之间用松耦合方式结合,被观察者不知道观察者的细节,只知道观察者实现了观察者接口;

    4、使用此方式是,可以从被观察者处推(push)或拉(pull)数据

    5、有多个观察者时,不可以依赖特定的通知次序。


    适用之处:

    各种需求引起的,对数据源(事件源)的监听,譬如button的onclick事件监听/触发、page的onload事件监听/触发等等;

    在多个事件/数据/场景依赖某一事件/数据/场景变更,而触发自身的变更,也可以使用观察者模式。

     

    源文档 <http://www.haogongju.net/art/592723>

  • 相关阅读:
    python爬虫headers设置后无效解决方案
    idea建立web项目servlet映射的地址/jsp访问不到
    bootstrap栅格系统错位问题
    python2 python3共存解决方案
    Springboot+Thymeleaf框架的button错误
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
    星空雅梦
  • 原文地址:https://www.cnblogs.com/titer1/p/2711574.html
Copyright © 2020-2023  润新知