HeadFirst读书笔记(定期更新)

发现一个网址:https://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html

设计模式入门——策略模式:

  • 把会变化的部分取出并“封装”起来,以便日后可以轻易地改动。
  • 针对接口编程,而不是针对实现编程。
    Ⅰ、在鸭子行为中实现飞行接口这个实例中,鸭子的子类降使用接口所表示的行为
    Ⅱ、Animal animal = new Dog(); animal.makeSound(); 多态的运用,利用多态,程序会在运行时才指定具体实现的对象。
    Ⅲ、Duck类中声明接口,子类在构造器中对其接口进行实例化,利用多态可以动态指定不同的实现类。
  • 多用组合,少用继承

观察者模式

  • 观察者模式定义了对象之间的一对多依赖。
  • 观察者模式设计思路:
    Ⅰ、(接口)主题 Subject: registerObserver(Observer o ), removeObserver(Observer o );notifyObservers();
    Ⅱ、(接口)观察者 Observer: update(…)
    Ⅲ、(实现类)ConcreteSubject: 在构造器中新建一个ArrayList用来保存注册的观察者对象。
    Ⅳ、(实现类)ConcreteObserver:构造器中加入Subject参数并调用其registerObserver方法注册当前类。
  • java内置的观察者模式
    java内置的观察者模式需要继承Observeable以及实现Observer。
    需要注意的是:
    可观察者送出通知需要先调用setChanged();然后再使用notifyObservers();
    由于Observerable是一个类,当某类需要同时具有这个类和另一个超类的行为,就会引发问题,如果无法满足你的需求你就要像2中所提到的方法实现。
  • 在android的Button.setOnClickListener(new OnClickListener)就是用到观察者模式;

装饰者模式

  • 开放关闭原则
    类应该对扩展开放,对修改关闭。但是如果每个地方都采用开放-关闭原则是一种浪费,还会导致代码变得复杂难以理解。
  • 装饰者可以在所委托被装饰者的行为之前或者之后加上自己的行为
  • 装饰者和被装饰者必须是一样的类型,因此装饰者类必须继承被装饰者的超类

你可能感兴趣的:(读书笔记,读书笔记,设计模式)