原则

模式

实践

关联

 

 

原则

为交互对象之间的松耦合设计而努力

 

模式

观察者模式

在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会受到通知,并自动更新


《Head First 设计模式》 第二、三章 观察者模式、装饰者模式

Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象。

ConcreteSubject:具体主题(具体被观察者),该角色将有关状态存入具体观察者对象,在具体主题的内部状态发生改变时,给所有注册过的观察者发送通知。

Observer:抽象观察者,是观察者者的抽象类,它定义了一个更新接口,使得在得到主题更改通知时更新自己。

ConcrereObserver:具体观察者,实现抽象观察者定义的更新接口,以便在得到主题更改通知时更新自身的状态。

图及说明来源于:

https://blog.csdn.net/itachi85/article/details/50773358

 

实践

书中的实例,看了这张图,就能回想起观察者模式的实际应用方式

《Head First 设计模式》 第二、三章 观察者模式、装饰者模式

图片来源于《Head First 设计模式》 第 56 页

 

关联

哪里用到了观察者模式?

什么是ApplicationContext? 

它是Spring的核心,Context我们通常解释为上下文环境,但是理解成容器会更好些。 

ApplicationContext则是应用的容器。

Spring把Bean(object)放在容器中,需要用就通过get方法取出来。

是个抽象类,里面只有一个构造函数和一个长整型的timestamp。

是一个接口,里面只有一个onApplicationEvent方法。

所以自己的类在实现该接口的时候,要实装该方法。

这个bean得到通知。

其实这就是标准的Oberver设计模式。

来源于:

https://www.cnblogs.com/softidea/p/5716870.html 

 

不错的博客

https://blog.csdn.net/itachi85/article/details/50773358

 

 

 

 

装饰者模式

 

原则

对扩展开放,对修改关闭

 

模式

装饰者模式

动态地将责任附加到对象上。想要扩展功能,装饰者提供有别于继承的另一种选择


《Head First 设计模式》 第二、三章 观察者模式、装饰者模式

Component:抽象组件,给对象动态的添加职责。

ConcreteComponent:组件具体实现类。

Decorator:抽象装饰者,继承Component,从外类来拓展Component类的功能,但对于Component来说无需知道Decorator的存在。

ConcreteDecorator:装饰者具体实现类。

图及说明来源于:

https://blog.csdn.net/itachi85/article/details/51282647

 

实践

书中的实例,看了这张图,就能回想起装饰者模式的实际应用方式

《Head First 设计模式》 第二、三章 观察者模式、装饰者模式

图片来源于《Head First 设计模式》 第 92 页

 

关联

哪里用到了装饰者模式?

Java 中的 java.io 类就是使用了装饰者模式

 

不错的博客

https://blog.csdn.net/itachi85/article/details/51282647

 

相关文章:

  • 2021-09-15
  • 2021-09-14
  • 2021-08-11
  • 2021-04-03
  • 2021-05-03
  • 2021-08-09
  • 2021-10-31
猜你喜欢
  • 2021-06-13
  • 2021-05-02
  • 2021-05-25
  • 2021-04-06
  • 2021-09-12
  • 2021-12-19
  • 2021-08-08
相关资源
相似解决方案