zoukankan      html  css  js  c++  java
  • 《Head first 设计模式》读书笔记

    对扩展开放,对修改关闭。

    一、策略模式

    策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

    例子:

    1)Duck类

    各类鸭子继承Duck类

    2)FlyBehavior接口

    各种不同的飞行行为类实现FlyBehavior接口

    3)QuackBehavior接口

    各种不同的叫行为实现该接口

    ---

    Duck类里有flybehavior对象,鸭子的飞行行为委托给了flybehavior对象来做,performFly方法里面就是flybehavior对象在fly(),setFlyBehavior方法用来设置flybehavior对象。

    飞行行为不再属于鸭子,而是独立出来的一种行为。并不是所有的鸭子都会飞。实现时大概如下:

    Duck model = new ModelDuck();
    mode.performFly(); //默认不会飞
    mode.setFlyBehavior(new FlyRocketPowered()); //设置飞行行为对象,FlyRocketPowered实现了FlyBehavior接口
    mode.performFly(); //飞,performFly的里面的实现代码是 new FlyRocketPowered().fly();

     二、观察者模式

    观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。(让观察者自己更新而不是主题去帮他们更新,因为主题的观察者是不定的,随时可能变动的)

    观察者模式提供了一种对象设计,让主题和观察者之间松耦合。

    例子:

    1)WeatherData类——主题

    继承Subject接口,Subject有注册观察者、移除观察者、通知观察者方法

    2)状况布告板、统计布告板、预测布告板 ——观察者

    继承Observer接口(update数据)、DisplayElement接口(display数据)

    三、装饰者模式

     装饰者模式动态地将责任附加到对象上。若要扩张功能,装饰者提供了比继承更有弹性的替代方案。

    例子:

    ......

  • 相关阅读:
    58.与人相处的艺术
    26.随时随俗
    24.心平气和
    61.扶树与扶人
    47.非要坚持下去吗
    42.有“舍”才有“得”
    62.离阳光只有五十米
    49.用微笑把痛苦埋葬
    60.换个角度,你便是赢家
    35.忍是大智、大勇、大福
  • 原文地址:https://www.cnblogs.com/zhrj000/p/3064734.html
Copyright © 2011-2022 走看看