java中观察者模式思路浅谈总结

1.观察者模式有四个角色:

抽象被观察者角色:定义注册观察者,删除观察者和通知观察者方法。

具体被观察者角色:抽象被观察者角色的具体实现。

抽象观察者角色:定义一个接收消息更新方法。

具体观察者角色:抽象观察者角色的具体实现。

抽象被观察者角色接口定义:

package renchaofeng_observer;

public interface Observerable {
  void registerObserver(Observer observer);//注册观察者
  void removeObserver(Observer observer);//移除观察者
  void notifyObserver();//通知观察者
  void setMessage(String message);
}

具体被观察者实现:

package renchaofeng_observer;

import java.util.*;

public class ObserverableImpl implements Observerable {
	List<Observer> observers = new ArrayList<Observer>();
	private String message=null;
	public void registerObserver(Observer observer) {
		observers.add(observer);
	}

 
	public void removeObserver(Observer observer) {
			 if(!observers.isEmpty()) {
				 observers.remove(observer);
			 }
	}

	@Override
	public void notifyObserver() {
		 for(Observer o : observers) {
			 o.update(message);
		 }
	}
	
	public void setMessage(String message) {
		this.message = message;
	};
}

抽象观察者接口定义:

package renchaofeng_observer;

public interface Observer {
  void update(String message);//接收通知消息做出更改处理
}

具体观察者实现:

package renchaofeng_observer;

public class ObserverLi implements Observer {
	 
	@Override
	public void update(String message) {
		System.out.println("小李收到消息:"+message);
	}
}


package renchaofeng_observer;
public class ObserverWang implements Observer {

	@Override
	public void update(String message) {
		System.out.println("小王收到消息:"+message);
	}

}

测试类:

package renchaofeng_observer;

import org.junit.Test;

public class ObserverTest {
	@Test
  public void testonef() {
	  Observerable obable = new ObserverableImpl();
	  Observer li = new ObserverLi();
	  Observer wang = new ObserverWang();
	  obable.registerObserver(li);
	  obable.registerObserver(wang);
	  obable.setMessage("谷歌牛逼。。");
	  obable.notifyObserver();
  }
}

输出结果:

小李收到消息:谷歌牛逼。。
小王收到消息:谷歌牛逼。。

so,观察者介绍完毕。

参考:https://blog.csdn.net/u012233285/article/details/52966870

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值