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

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

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

**

策略模式

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

设计原则:

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

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

观察者模式

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

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

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

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

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

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

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

这里写图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值