1)一个模块变化通知其它模块
其实我不建议一个xxxHandler中既要处理普通的业务,又要处理Listener,这样子会看起来比较混乱。
而是EventManager.java中只处理
public class EventManager {
public static onServerStartBegan(){
}
public static onRoleLevelUp(){
RewardService.calReward();
ActivityService.refreshActivityList();
}
}
这样子去做监听者模式,原因就是因为:一下子就看出来到底都哪里调用了,注解的方式的缺点就是,不容易看出来到底哪里监听了。
而handler不一样,一个消息号,只有一个处理的地方,因此是很清晰的。
我们写代码原则肯定是为了维护方便,写的代码根本不知道有哪些地方调用了,这是很混乱的,不是为了解耦而解耦,而是写代码前想想如何维护方便。
2)任务系统
例子:达到一定的条件后, 达到50级后开启一个任务,任务要求:要杀5个怪,则奖励一个东西。
一、首先设计层面:
有一个任务id,如: task_1001。
其次,这是一个事件类型,如Event_1001:杀x个怪,再根据策划配置x这个参数,决定这个事件是否完成。
二、其实在没有开启这个任务时,逻辑肯定是写好的,而且也fireEvent做了统计,但是却没有开启监听,因此,不会做统计。
三、后这个任务一旦开启,并完成后,就会永久记录在数据库中,这样子保证不会重复开启。