您的位置:首页 > 其它

关于观察者模式的 个人理解

2017-09-15 18:22 239 查看

1. 观察者模式 实际上是一个被观察者 管理着所有的观察者, 一旦观察者有变化或者有动作, 要通知所有的观察者.

这样就要去观察者要抽象为一个接口或者抽象类了. 所有子类都要实现相同的方法. 被观察者变化时候, 遍历所有的观察者,执行观察者的方法

java 自有的观察者模式 :   观察者都要继承或者实现Observer接口 实现update方法.

                                        同时被观察者继承Obserrvable类 ,他已经帮忙实现了 add, delete notify 等方法了, 而且里面还做了多线程控制. 集合用的Vector

              自己的被观察者类只需要实现 需要通知所有观察者的方法即可.  

因为实际工作的是 观察者的update方法,是继承来的,参数也是固定的. 这样就没法传参数了

2.事件驱动模型, 感觉是我们工作中最常见的,

也就是 listener  和 event那一套

应用上 应该是说

定义一个事件 event 继承 EventObject 这个事件可以定义这个事件自己特有的属性, 事件需要加消息等?

定义一个接口 抽象listener 继承  EventListener  ,里面方法自己定义.;参数是具体事件对象

同时定义一个或者多个 listener实现类

因为是监听嘛, 肯定是要绑定到一个对象上.    这个对象应该就是相对于上面模式的被观察者, 事件发起者

定义对象, 对象里面包含一个或者多个Listener; 同时提供 set  和get方法  还有add方法.

接下来就是定义事件发起的方法了.   方法里面直接直接调用抽象的相对应的listener的方法,参数是相应的事件的new 对象. 可以将参数 赋予事件对象的构造器去初始化.

 

整个事件驱动就定义完成了. 

 

接下来就是 客户端调用了.  调用的时候, 先初始化对象,  同时 为对象绑定监听,listener. 就是就提listener的实现类. 这样就好了 

初始化时候 可以直接用匿名内部类就好了 

button.setOnclick(new ClickListener() {//我们给按钮注册点击监听器
//按钮被点,我们就验证后提交
public void click(ClickEvent clickEvent) {
System.out.println("--------单击事件代码---------");
System.out.println("if('表单合法'){");
System.out.println("\t表单提交");
System.out.println("}else{");
System.out.println("\treturn false");
System.out.println("}");
}
});

 

 

接下来就是调用了相应方法就会触发监听了.

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: