文章标题

来源:互联网 发布:python时间戳 编辑:程序博客网 时间:2024/05/15 04:17

近两天在看设计模式,略有所得,跟大家分享一下。一方面,希望对观察者设计模式有兴趣的同学有所帮助(哪怕一点点,我也会感到很欣慰···毕竟我也是新手!),另一方面,则是加深自己对它的认识以及印象。因为,只有能够讲出来的东西,才是自己的东西。
一直感脚设计模式很高大上,最近才下决心看一看、啃一啃(很硬!)。果然,不过耐心看,不懂多看几遍还是能看懂的。废话不多说了,开始撸起~~~
我们最常见的按钮点击事件,在底层(Android的OnclickLisenter封装)实现的其实就是观察者设计模式。如果对借口回调有所了解的话,那么将会更好理解。观察者设计模式本质上就是借口回调!
我给大家来一个简单的借口回调:
在 B类中的一处点击事件来获取A类的数据
现在有一个类A:
Class A{
// 我们在A中写一个内部接口(不是内部的也是可以的,此处是为了方便,这种写法也比较常见)
interface PressListener{
// 定义方法(形参可以按照需求给你需要的参数)
void callBack(String data);
}
// 将接口的实例作为参数传递过来(此为一种方法)
public void netData(PressListener listener){
// 在此处比如有一个网络请求
//在请求成功的方法中
onSucces(String data){
listener.callBack(data);
}
}

*// 此为第二种常用的初始化接口的实例(两种方法用一个就可以了)
// 当用第二个方法的时候,netData()就不再需要传递参数了
PressListener listener;
publid void setListener(PressListener listener){
this.listener = listener;
}*
}

此处是类B:
class B{
A a;

// 在点击事件中onclick(View v){    // 方法一    a.netData(new PressListener{        public void callBack(String data){        // 在此处,就能够获得接口传过来的值data        }    };

// 方法二
a.setsetListener(new PressListener{
public void callBack(String data){
// 在此处,就能够获得接口传过来的值data

        });

}
// 请求网路
a.netData();
}
因为网路请求大多是耗时操作,常常会出现数据还没有请求下来,而下方代码需要用数据进行设置的操作,而造成空指针的错误。通过接口回调,在数据请求成功之后才会通过接口中的方法,将数据传递到创建接口实例的callBack方法中,就避免了空指针的发生。(写到这里,我发现自己写的实在是很粗糙。如果读到了这里,感谢你的耐心与支持!)

找一张观察者设计模式的图:这里写图片描述
观察者设计模式中有几个设计原则:1.针对接口编程,而不是针对具体的类编程
2.为交互之间的松耦合儿努力 3.实现一对多的依赖,当一个对象转台改变,依赖它的对象就会收到通知。

实在是不好意思往下写了。第一次写,原来这么难。根本原因还是自己对其理解的不够深刻。

本来想为大家分享一下对观察者设计模式的理解,结果只说了一个接口回调,还写的乱七八糟的,自己都不想看了。深以为戒,下次我会准备充分再来叨扰大家!

深感抱歉,最后为大家推荐一本设计模式的书《HeadFirst 设计模式》。

0 0
原创粉丝点击