为了加深理解,我试着用英雄联盟中的场景去描述涉及模式,更有趣一些o(∩_∩)o…哈哈
“把模式装进脑子里,然后在你的涉及和已有的应用中,寻找何处可以使用它们” —以往是把代码复用,现在是把经验复用。
**
策略模式
**
“定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。”
设计原则:
把代码中可能会变化的部分独立封装起来,避免对其他不变部分产生影响
将行为作为成员变量引入需要调用该行为的类,通过set方法动态的改变将要使用的行为。
观察者模式
观察者模式中的两个主体是 观察者(Observer) 和 可观察者(又称主题)
当主题发生变化时,所有的观察者都会收到通知。
以LOL为例
所有的游戏数据变化如击杀、死亡、血量装备变化都会在玩家的屏幕上展示,这里玩家就是观察者,系统作为主题。
当玩家进入一盘游戏时,相当于注册成为了系统的观察者,当游戏数据发生变化时,系统以声音、图像的形式推送给玩家。—–主题可以推送数据给观察者
除了系统推送给玩家的信息,玩家也可以主动获取系统中的数据(点击tab查看双方英雄人头数)——观察者可以从主题中拉数据
不想玩退出游戏——当玩家不想再当观察者时调用主题的 删除方法就可以了
JAVA中内置了观察者模式,java.util包中包含了Observer接口和Observable**类** 对应观察者和主题,我们可以使用推或拉的方式传送数据。
主题中的数据,加上getter/sertter方法就可以拉了。。。