(1)一个人只要自己不放弃自己,整个世界也不会放弃你.
(2)天生我才必有大用
(3)不能忍受学习之苦就一定要忍受生活之苦,这是多么痛苦而深刻的领悟.
(4)做难事必有所得
(5)精神乃真正的刀锋
(6)战胜对手有两次,第一次在内心中.
(7)编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~
Java SE 084 Observable类与Observer接口详解,深入理解观察者模式
文章目录
1.Java SE中已有观察者模式类的使用
1.1定义具体主题角色
package com.javareview.designmodel.swingobserver;
import java.util.Observable;
/**
* 具体主题角色
*/
public class MyObservable extends Observable {
void counter(int number){
for(; number>=0;number--){
//s1.如果当前主题角色改变了,则首先必须调用setChanged()方法,
//s2.没有调用setChanged()方法将不会有什么动作发生。
setChanged();
notifyObservers(number);
}
}
}
1.2.定义具体观察者角色1
package com.javareview.designmodel.swingobserver;
import java.util.Observable;
import java.util.Observer;
/**
* 具体观察者角色1
*/
public class FirstObserver implements Observer {
@Override
public void update(Observable o, Object arg) {
System.out.println(arg.toString());
}
}
1.3.定义具体观察者角色2
package com.javareview.designmodel.swingobserver;
import java.util.Observable;
import java.util.Observer;
/**
* 具体观察者角色2
*/
public class SecondObserver implements Observer {
@Override
public void update(Observable o, Object arg) {
if(new Integer(arg.toString())<=5){
System.out.println(arg.toString());
}
}
}
1.4Java SE 观察者模式测试
package com.javareview.designmodel.swingobserver;
/**
* 观察者模式测试
*/
public class MyObservableTest {
public static void main(String[] args) {
//s1.构建具体主题角色
MyObservable mo = new MyObservable();
//s2.构建观察者角色1
FirstObserver f = new FirstObserver();
//s3.构建观察者角色2
SecondObserver s = new SecondObserver();
//s4.为主题角色注册观察者角色1
mo.addObserver(f);
//s5.为主题角色注册观察者角色2
mo.addObserver(s);
//s6.调用方法,具体主题角色调用方法做出变更,通知观察者
mo.counter(10);
}
}