行为型模式-----观察者模式(Observer)

1、观察者模式

              定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于他的对象都得到通知并被自动更新。

              涉及到的都是类与类之间的关系,不涉及到继承,

       实例一

//观察的主体
public interface Subject {

	public void add(Observer observer);

	public void del(Observer observer);

	public void notifyObserver();

}

public class CommonSubject implements Subject {

	private List<Observer> list = new ArrayList<Observer>();

	@Override
	public void add(final Observer observer) {
		this.list.add(observer);
	}

	@Override
	public void del(final Observer observer) {
		this.list.remove(observer);
	}

	@Override
	public void notifyObserver() {
		for (final Observer o : this.list) {
			o.update("notify ");
		}
	}
}

// 监听者对象
public interface Observer {

	public void update(String text);

}

public class Child1 implements Observer {

	@Override
	public void update(final String text) {
		System.out.println(" ~~~ Child1  update ~~~ : " + text);
	}

}

public class Child2 implements Observer {

	@Override
	public void update(final String text) {
		System.out.println(" ~~~ Child2  update ~~~ : " + text);
	}

}

 

      模拟调用:

 

	public static void main(final String[] args) {
		final Subject subject = new CommonSubject();
		final Observer o1 = new Child1();
		final Observer o2 = new Child2();
		final Observer o3 = new Child1();
		final Observer o4 = new Child2();
		subject.add(o1);
		subject.add(o2);
		subject.add(o3);
		subject.add(o4);
		subject.del(o2);
		subject.notifyObserver();
	}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值