观察者模式又名订阅模式,那么我们就从生活中来举例子:
比如你所住的小区门卫王大爷说,小区现在为了响应河蟹社会的口号,居委会每天都会出一条新闻广播消息,需要订阅的业主来门卫交钱订阅,订阅的业主每天早上7点会收到小区广播,不订阅的业主就收不到!
于是我们的“门卫”类就有了:
public class PropertyManager { public static String message = "好好学习天天向上"; /** * 登记过的业主 */ public List<Owner> owners = new ArrayList<Owner>(); /** * 来一个业主就登记进来 * @param owner */ public void addListener(Owner owner){ owners.add(owner); } public void noticy(){ for(Owner owner : owners){ //通知每个人当前的“message” } } }
首先王大爷有个登记表,并且把交了钱订阅的业主登记在这张表上,每天早上就会给这些订阅的业主发送广播,没有订阅的业主则不会受到广播。
总结:观察者模式就是注册一个监听,有变化后就通知这些注册了监听类。