Head First设计模式---策略、观察者模式

来源:互联网 发布:华为网络培训视频 编辑:程序博客网 时间:2024/05/22 18:01

为了加深理解,我试着用英雄联盟中的场景去描述涉及模式,更有趣一些o(∩_∩)o…哈哈

“把模式装进脑子里,然后在你的涉及和已有的应用中,寻找何处可以使用它们” —以往是把代码复用,现在是把经验复用。

**

策略模式

**
“定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。”

设计原则:

把代码中可能会变化的部分独立封装起来,避免对其他不变部分产生影响

这里写图片描述
将行为作为成员变量引入需要调用该行为的类,通过set方法动态的改变将要使用的行为。

观察者模式

观察者模式中的两个主体是 观察者(Observer) 和 可观察者(又称主题)

当主题发生变化时,所有的观察者都会收到通知。

以LOL为例
所有的游戏数据变化如击杀、死亡、血量装备变化都会在玩家的屏幕上展示,这里玩家就是观察者,系统作为主题。

当玩家进入一盘游戏时,相当于注册成为了系统的观察者,当游戏数据发生变化时,系统以声音、图像的形式推送给玩家。—–主题可以推送数据给观察者

除了系统推送给玩家的信息,玩家也可以主动获取系统中的数据(点击tab查看双方英雄人头数)——观察者可以从主题中拉数据

不想玩退出游戏——当玩家不想再当观察者时调用主题的 删除方法就可以了

JAVA中内置了观察者模式,java.util包中包含了Observer接口和Observable**类** 对应观察者和主题,我们可以使用推或拉的方式传送数据。
这里写图片描述

这里写图片描述

主题中的数据,加上getter/sertter方法就可以拉了。。。

0 0