四时宝库

程序员的知识宝库

「开发者手册」大话设计模式之观察者模式

前言

观察者模式,有时又被称作发布/订阅模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。

使用场景

观察者模式的使用场景比较多,概括来说,只要一个场景满足:当一个条件改变时,其他相关联的条件都要改变,都可以使用观察者模式。如,在电商系统中,当一个订单被支付后,卖家、买家都要收到通知的情况。

实现方式

因本人对PHP相对较为熟悉,本文主要介绍用PHP的实现,Java、Python、Node等语言的实现,大家可以举一反三。

在介绍具体的步骤之前,我们现在假设一个场景:假设现有一个三口之家——儿子、爸爸和妈妈,爸爸妈妈为了约束儿子,了解儿子的消费情况,现在要求:只要儿子一消费,就要同时收到消费通知。

1、创建儿子类

儿子类包含一个添加观察者的方法和一个执行消费的方法。

2、创建父母类

父母类只包含一个发送通知的方法。

3、创建儿子对象,并添加观察者

4、儿子执行消费动作

至此,一个简单的观察者模式的PHP实现方案就完成了。是不是很简单?

总结

观察者模式解除了主体和具体观察者的耦合,让耦合的双方都依赖于抽象,而不是依赖具体,从而使得各自的变化都不会影响另一边的变化。

正因为这些优点,观察者模式被应用到很多框架中,如在PHP框架——Laravel中,开发者使用观察者模式实现了事件机制,允许你订阅和监听应用中的事件。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接