Java SE 084 Observable类与Observer接口详解,深入理解观察者模式

(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);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值