设计模式学习之消息驱动机制
消息驱动机制,也叫观察者模式、事件驱动模式。不论是在应用还是游戏中,都是一种常见的设计模式,该设计模式非常利于模块的解耦。
我们这里以老师和学生为例,有一个老师和多个学生,老师发的每一个消息,学生都要能够收到。如:老师说,明天我们放假,然后确保所有学生都能收到该消息。
首先,建立一个消息分发中心,负责收集和移除消息接收个体(这里就是学生),同时负责通知到收集的每一个个体。该类命名为Human_Event.
public abstract class Human_Event { private List<Listener> mNoticeList = new ArrayList<Listener>(); public void addListener(Listener msg) { mNoticeList.add(msg); System.out.println("添加一个学生。"); } public void removeMessage(Listener msg) { mNoticeList.remove(msg); System.out.println("移除一个学生。"); } public void notifyListener() { for (Listener l:mNoticeList) { l.update(this); } } }如此,将整个Teacher对象传给了Student,Student就可以根据自己的需要去取老师的信息了。
但是,个人比较推荐前者,按需将参数传递过去就行了,将整个对象传递过去并进行强转,对于受体来说,就可以毫无节制的获取所有信息了,可能造成进一步耦合。