观察者模式Demo

4种角色:

1、抽象观察者

2、抽象主题

3、具体观察者

4、具体主题


Java对观察者模式提供了支持    详情见: java.util.Observable


/**
 * 抽象观察者
 * */
public interface IObserver {
void notification(String str);//被通知方法     由被观察的对象调用

}

/**
 * 抽象主题角色
 * */
public interface ILooked {
void addLooked(IObserver obj);//注册观察者
void removeLooked(IObserver obj);//移除观察者
void submit(String str);//通知观察者

}

/**
 * //具体观察者
 * */
public class ConcretObserver implements IObserver {


//  该方法最终一定是由被观察对象执行的
@Override
public void notification(String str) {
System.out.println("我被点击"+str);
}


}

/**
 * 具体主题角色
 * */
public class MyButton implements ILooked {


//观察者集合
private List<IObserver> list=new ArrayList<IObserver>();//
@Override
public void addLooked(IObserver obj) {//注册观察者
list.add(obj);
}


@Override
public void removeLooked(IObserver obj) {//移除观察者
list.remove(obj);
}


@Override
public void submit(String str) {//通知观察者执行
for(IObserver ob : list){
ob.notification(str);
}
}


}




/**
 * 测试
 * */
public class Client {


/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyButton button=new MyButton();
//创建观察者
IObserver b1=new ConcretObserver();
IObserver b2=new ConcretObserver();
IObserver b3=new ConcretObserver();

//往被观察对象里注册观察者
button.addLooked(b1);
button.addLooked(b2);
button.addLooked(b3);

button.submit("通知观察者");

//移除观察者
button.removeLooked(b1);
button.submit("通知观察者");
}


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值