zoukankan      html  css  js  c++  java
  • Head First 设计模式笔记(第二章 观察者模式 & 第三章 装饰者模式)

    第二章 观察者模式p37~78, 第三章 装饰者模式p79~108.

    概述

    观察者模式就是"订阅-通知"模型.

    观察者模式

    实现的效果
    观察者和被观察者, 被观察者有任何变动, 观察者都希望收到通知.

    实现细节
    观察者需要去被观察者那里登记, 被观察者维护一个观察者列表, 当有变动时, 被观察者遍历这个列表, 逐个去通知.

    当观察者收到通知时, 可以有2种方式改变, 一个是Push, 一个是Pull. Push是被观察者在通知的适合, 以传参数的方式, 传过来的; Pull是观察者主动获取被观察者的属性.

    装饰者模式

    实现的效果
    主体和搭配, 可以很灵活的在主体上进行无限的搭配. 以咖啡和配料为例, 咖啡是主体, 配料是搭配. 咖啡中可以加2次糖, 3次牛奶, 1次珍珠, 1次椰果(一点点的配方).

    实现细节
    主体和搭配都继承于一个抽象类, 搭配把主体包装起来, 搭配也可以把搭配包装起来. 这样就可以无限套娃...
    当执行一个方法时, 就按顺序逐步拆包, 得到结果.

    现实场景

    观察者模式
    UI开发中, 一般会有事件的概念, 比如一个Form中包含很多个Control, 如一个Button Control, 会有click事件.
    这里Button Control是被观察者, Form是观察者, Form中对Button Control的click事件进行注册. 一旦Button Control被click了,
    就会直接通知form这个事件触发了, form就会执行事先注册的方法.

    装饰者模式
    没用过

  • 相关阅读:
    UVA 10692
    XCODE插件 之 Code Pilot 无鼠标化
    VC版超级记事本
    抓包函数-pcap_next
    通过PowerShell卸载全部的SharePoint 2010 解决方式
    typedef和#define的差别——————【Badboy】
    一个简单演示样例来演示用PHP訪问表单变量
    怎样隐藏Windows7 系统保留分区
    2016 360笔试题------找第一个仅仅出现一次的字符
    Eclipse中Easy Shell插件配置PowerCmd
  • 原文地址:https://www.cnblogs.com/winwink/p/HeadFirstPattern_P2_Observer-Decorator.html
Copyright © 2011-2022 走看看