观察者模式(通俗易懂)

理解: 观察者模式简单的理解就是新建一个接口,在需要使用该接口的地方实现该接口。在需要告诉该接口的具体方法中实现该接口实例,并调用需要使用的方法,这就是所谓的订阅

观察者原理:把注册为观察者的用户,有更新就发送给他们。

/**
 * 天气站
 * 实现一个主题接口,用于管理天气预报接口着的管理
 *
 */
public class WeatherStation implements Subject {
	// 订阅信息的观察者,写一个管理器比较好,但这里只是简单讲解 观察者模式
	List<Observer> userList = new ArrayList();

    private String weather;

    public String getWeather() {
        return weather;
    }

    public void setWeather(String weather) {
        this.weather = weather;
    }
	//天气预报有更新, 发送天气预报告诉观察者(用户)	
	public void sendWeather( ){
		//在需要告诉该接口的具体方法中实现该接口实例,并调用具体方法up,这样在实现了Observer  的 WeatherUser  中的 up就能收到消息
		for(Observer o :userList ){
				o.up(getWeather());
		}
  }
	..... 简略
	//在需要告诉该接口的具体方法中实现该接口实例
   public void  addObserver(){
 }
}
/**
 * 订阅天气预报的用户
 * 实现一个观察者接口 
 * 在需要使用该接口的地方实现该接口 用户需要订阅天气预报,实现该接口
 */
public class WeatherUser implements Observer {
    @Override
    public void up(String data) {
        System.out.println("data  =  " +data);
    }
}
/**
 * 主题
 * 天气预报订阅者管理
 * 比如 注册为观察者  删除观察者等
 */
public interface Subject {

	void sendWeather();
}
/**
 * 观察者
 */
public interface Observer {

    /**
     * 天气预报更新,这个方法接受
     * @param data
     */
    void up(String data);
}

为了让新手方便看清楚观察者的原理,我尽量写少代码,只是写出关键的代码
Subject : 代码是进行观察者的管理,实际中非常有必要,但是目前要的是突出观察者原理

Observer : 观察者(内容接收者),提供一个 up 方法更新(接收内容)

上面说的本质就是1.获取到观察者的实例
2.在有更新的时候,调用更新相关的方法即可

实现

public static void main(String[] args){
 	// 1.
	WeatherStation w = new WeatherStation();
	w.sendWeather();
	// 2. 面向接口编程 
	Subject w = new WeatherStation();
	w.sendWeather();
    
}

是不是很简单,哈哈哈

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值