摘要:
本篇主要讲Java设计模式之观察者模式。
[TOC]
当心浮气躁时,告诫自己要静下心来,一步一步来,不要急不要燥。
观察者模式也叫做发布订阅模式,是一种行为型设计模式。观察者模式最常用的地方是GUI系统、订阅---------发布系统。尤其是GUI系统,使用观察者模式可以使UI层与业务逻辑解耦。
定义对象间一种一对多的依赖关系,使得每当一个对象改变状态。则所有依赖于它的对象都会得到通知并被自动更新。
关联行为场景
需要注意的是,关联行为是可以拆分的,并不是“组合”关系。
事件多级触发场景。
跨系统的消息交换场景,如消息队列、事件总线的处理机制。
说明:
Subject
被观察者,一般是抽象类或者是实现类,主要功能是管理观察者(动态的增加、取消观察者)并且通知观察者。
ConCreteSubject
具体的被观察者,定义被观察者自己的业务逻辑,同时定义对哪些事件进行通知。
Observer
观察者,一般是抽象类或者是实现类,对接收到的信息进行处理。
ConcreteObserver
具体的观察者,通过接收的信息,实现各个观察者自己的业务逻辑。
现在有这样一个功能需求:在Android的一个界面上,有三个控件,分别为Edittext,TextView,ImageView,当EditText按下键盘的回车键(或者确认键)时,TextView显示EditText输入的文字,ImageView根据输入的文字显示相应的图片。如果运用观察者模式去做的话,EditText是被观察者,TextView和ImageView是观察者,当EditText输入的时候按下回车键,ImageView和TextView通过接受的信息根据自己的业务逻辑进行相应的处理。下面就让我们来实现一下。
重写EditText,使其成为被观察者
package com.yf.designpatternandroid;
import android.content.Context;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.input