23种设计模式(十七)观察者模式(阁瑞钛伦特软件-九耶实训)

常说的设计模式是23种设计模式,分为3大类:

  • 创建型模式5种:工厂方法、抽象工厂、单例、建造者、原型
  • 结构型模式7种:适配器、代理、桥接、装饰者、外观、享元、组合
  • 行为型模式11种:模板方法、解释器、策略、观察者、迭代器、职责链、命令、备忘录、状态、访问者、中介者。

上次咱们说了策略模式,今天咱们来说“观察者模式”。

如果要理解“观察者模式”关键在于理解“观察者”。对于行为型模式来说,观察这个行为是“观察者观察被观察者”。所以,我们构建的程序,要分两个部分,一部分是“观察者”,一部分是“被观察者”。当然,“观察者”与“被观察者”之间的关系是我们强加给程序的意义。实际上,需要注意数据流向,从而读懂代码真正的逻辑。

先建立用户程序,用户要有一个能更新或者能接收信息的行为:

所以接口定义为:

用户的实现类:

 

 

在建立一个支持多用户的程序,需要对多用户进行管理,也就是要有添加用户的行为,删除用户的行为以及执行用户更新的行为。

所以,接口定义为:

接口的实现类中,由于支持多用户,所以用一个集合来存储多个用户对象。

当执行attach方法时,添加一个用户对象

当执行detach,注销一个用户对象

当执行notifyObserver,执行所有已注册用户对象的更新方法

应用如下:

“ConcreteSubject”实现类实例化对象后,调用“attach”添加一个“ConcreteObserver”对象,用“notifyObserver”执行所有已注册用户的“update”更新。

下面咱们来看一下适用场景:比如说:一个神有很多的宠物,神只要一个“神之呼唤”就能让他麾下的所有宠物执行命令。

先建立宠物的接口:宠物必须有更新的方法。也就是接收神的信息的方法。

 

实现一个宠物龟 

 

在建立神的接口,要能够添加宠物对象,移除宠物对象以及执行宠物行为并发送命令。

 

 实现接口的神:

“attch”添加宠物对象

“detach”移除宠物对象

“notifyPet”使全部宠物听令

实际应用时:神的对象添加宠物“萨瓦”和“迪卡”并发送指令“来~来~来~”

 

最终宠物所有宠物接收到神的命令。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值