今天我们谈谈android中的observer模式,看了一下网上的代码,感觉不是很好理解,我还是引入高焕堂老师的EIT模式来说,同时我结合android中的为button设置监听来讨论这个问题,我先大概讲讲理论,然后在下面会以一个简单的代码来表现。
高老师的EIT模型中E和I是对应不变的,就像我们的button按钮是不变的,而变得只是button按钮以后处理事件,T也就是我们说的监听事件,在高老师来看是需要变得。同时监听事件是需要实现I接口的,这是我们连接变和不变的桥梁。高老师的E代表的是引擎,T代表的是轮胎,也就是引擎一旦上上去就不怎么会改变,但是轮胎会经常改变,I代表的是引擎和轮胎之间的接口,当我们把轮胎和接口连接在一起以后,我们就 可以愉快的玩耍了。ok,理论就讲到这个地方,下面是我模拟的一个button的监听实现的代码,
public class Test {
/**
*
* @author jk
*/
public static void main(String[] args) {
// 初始化一个button
Button btn = new Button();
// 设置一个监听的事件
btn.setOnClickListener(new MyListener());
// 通过btn.callonclick调用传入的MyListener对象的onclick方法
btn.callonclick();
}
}
// 定义一个接口
interface IMyInterface {
void onclick();
}
// 实现IMyInterface接口
class MyListener implements IMyInterface {
// 实现mListerer方法
public void onclick() {
System.out.println("ni hao ");
}
}
class Button {
// 设置接口对象
IMyInterface myInterface;
public void callonclick() {
// 调用子类对象的方法
myInterface.onclick();
}
public void setOnClickListener(IMyInterface myInterface) {
// 父类引用指向子类对象,这里传递的一般是一个子类对象
this.myInterface = myInterface;
}
}
有人说,这不就是回调吗?虽然我知道这个和大多数人说的回调几乎是一样的,但是,我真的不能理解回调。。。伤感