1.java web端的观察者模式,主要是 A 发生状态变化调用B 时,在A内部加入成员变量Listenter,并在Listener初始化时传入B,在A状态变化是,调用Listener.Notify,从而调用B;
2.在Android等界面UI控件的程序中,往往在A类中成员变量包括了TextVew Button等UI控件,这时 对控件添加addListener()方法的匿名内部类,其中的实现方法因为是内部类,所以可以直接访问A类的其他成员和方法;在系统运行时,用户触发界面点击,系统去调用之前在A类中注册过的Listener,调用匿名内部类的方法,比如onClick();
所以两种观察着模式的方式还是不一样,第一种是A调用B,A是状态改变的触发者,B是方法的实现类 对于第二种UI控件,系统或者用户是触发者,A类及其中Listener的匿名内部类实现的方法,是实现类,相当于第一种情况中的B,所以在第一种情况,即java web 后端设计观察者模式的时候,A类应该是仿照操作系统,自动设置事件的触发,调用,获取listener对象的实现类,B类的设计应该类似UI控件,对事先会触发的方法,提供一个匿名内部类,也可以用动态代理加反射的方法,调用类内部的method ,参考xUtils的实现。