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数据)

    三、装饰者模式

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

    例子:

    ......

  • 相关阅读:
    nginx添加新模块
    nginx rewrite规则last与break的区别
    tomcat调优的几个方面
    Servlet 中文乱码问题及解决方案剖析
    Nginx 启动脚本/重启脚本
    Nginx的启动、停止、平滑重启
    轻量级HTTP服务器Nginx(配置与调试Nginx)
    Nginx配置文件详细说明
    提高Java代码质量的Eclipse插件之Checkstyle的使用详解
    你会用shuffle打乱列表吗?
  • 原文地址:https://www.cnblogs.com/zhrj000/p/3064734.html
Copyright © 2011-2022 走看看