关于观察者模式的 个人理解
Posted 郝二驴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于观察者模式的 个人理解相关的知识,希望对你有一定的参考价值。
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("}"); } });
接下来就是调用了相应方法就会触发监听了.
以上是关于关于观察者模式的 个人理解的主要内容,如果未能解决你的问题,请参考以下文章