Android学习按键事件监听与Command模式
2015-02-28 16:57
183 查看
Android学习按键事件监听与Command模式 - Dufresne - 博客园
Android学习按键事件监听与Command模式
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;
对请求排队或记录请求日志,以及支持可撤销的操作。
将请求被封装成一个对象,当向某对象提交请求时,使我们可以不用去知道被具体的请求的操作或者请求的接收者,
实现了动作的请求者对象和动作的执行者对象之间的解耦合。
适用性:
使用Command模式代替callback形式的回调应用;
在不同的时刻指定、排列和执行请求,动态的更改请求;
支持取消操作;
支持修改日志,保存请求执行过程以便恢复操作;
Command模式支持一组事务的调用操作。且易于增加扩展新事务;
(何为事务参考:http://book.51cto.com/art/201202/319377.htm)
[b]结构:[/b]
![](http://pic002.cnblogs.com/images/2012/328668/2012052914533663.jpg)
[b]说明:[/b]
Command:命令的封装者,声明命令执行的操作接口;
ConcreteCommand:使命令的具体接收者执行相应的动作;
Invoke:发出执行该命令的请求,存储具体命令执行者的抽象父类;
Receiver:实施与执行具体相关请求的具体操作,由命令对象创建者指定;
通过此图可以到此模式的核心:实现操作对象的调用Invoke与具体实施该操作的对象Receiver之间解耦,
是通过增加Command,将动作执行委托给Command来执行调用真正的动作执行者。
public interface OnClickListener {
void onClick(View v);
}
作用:Interface definition for a callback to be invoked when a view is clicked.
就是一个click事件的回调接口。
在需要响应click事件的View中,都需要注册一个相应的ClickListener来监听click事件发生时被调用。
[b]看一下面这段代码:Button控件[/b]
[b]看一下相应的这个结构:[/b]
![](http://pic002.cnblogs.com/images/2012/328668/2012052914541045.jpg)
这里面View就是Invoke,OnClickListener就是Command,MyActivity就是Receiver。
[b]执行过程如下:[/b]
![](http://pic002.cnblogs.com/images/2012/328668/2012052914545127.jpg)
可以看到这种方式的应用属于:
Command模式替换Callback函数形式的回调模型,让框架结构变得更清晰更灵活。
Android学习按键事件监听与Command模式
一 Command模式
[b]意图:[/b]将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;
对请求排队或记录请求日志,以及支持可撤销的操作。
将请求被封装成一个对象,当向某对象提交请求时,使我们可以不用去知道被具体的请求的操作或者请求的接收者,
实现了动作的请求者对象和动作的执行者对象之间的解耦合。
适用性:
使用Command模式代替callback形式的回调应用;
在不同的时刻指定、排列和执行请求,动态的更改请求;
支持取消操作;
支持修改日志,保存请求执行过程以便恢复操作;
Command模式支持一组事务的调用操作。且易于增加扩展新事务;
(何为事务参考:http://book.51cto.com/art/201202/319377.htm)
[b]结构:[/b]
![](http://pic002.cnblogs.com/images/2012/328668/2012052914533663.jpg)
[b]说明:[/b]
Command:命令的封装者,声明命令执行的操作接口;
ConcreteCommand:使命令的具体接收者执行相应的动作;
Invoke:发出执行该命令的请求,存储具体命令执行者的抽象父类;
Receiver:实施与执行具体相关请求的具体操作,由命令对象创建者指定;
通过此图可以到此模式的核心:实现操作对象的调用Invoke与具体实施该操作的对象Receiver之间解耦,
是通过增加Command,将动作执行委托给Command来执行调用真正的动作执行者。
二 Android中OnClickListener
在View类中:public interface OnClickListener {
void onClick(View v);
}
作用:Interface definition for a callback to be invoked when a view is clicked.
就是一个click事件的回调接口。
在需要响应click事件的View中,都需要注册一个相应的ClickListener来监听click事件发生时被调用。
[b]看一下面这段代码:Button控件[/b]
public class MyActivity extends Activity { protected void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.content_layout_id); final Button button = (Button) findViewById(R.id.button_id); //注册click事件监听器 button.setOnClickListener(new View.BtnOnClickListener()); } private class BtnOnClickListener extends OnClickListener{ public void onClick(View v) { // Perform action on click } } }
[b]看一下相应的这个结构:[/b]
![](http://pic002.cnblogs.com/images/2012/328668/2012052914541045.jpg)
这里面View就是Invoke,OnClickListener就是Command,MyActivity就是Receiver。
[b]执行过程如下:[/b]
![](http://pic002.cnblogs.com/images/2012/328668/2012052914545127.jpg)
可以看到这种方式的应用属于:
Command模式替换Callback函数形式的回调模型,让框架结构变得更清晰更灵活。
相关文章推荐
- Android学习按键事件监听与Command模式
- Android学习按键事件监听与Command模式
- 【Android开发学习30】动态创建多个按钮,并给每个按键添加监听事件
- android 中如何监听按键的长按事件
- android学习进行时----1.1.2UI部分Button使用-事件监听
- Android如何监听蓝牙耳机的按键事件
- android应用开发实践一:Activity与控件布局,事件监听之学习实践
- 一个监听器监听多个事件 android学习(三)
- Android如何监听蓝牙耳机的按键事件
- Android Home键按键事件监听
- Android学习之监听按钮点击事件
- 2014-10-27Android学习------布局处理(八)------自定义ListView的监听事件和Adapter的实现-----城市列表应用程序
- android:动态创建多个按钮 并给每个按键添加监听事件
- Android如何监听蓝牙耳机的按键事件
- android客户端学习-事件监听的三种实现方式
- Android如何监听蓝牙耳机的按键事件(转)
- android学习之——Android事件处理(监听和回调)
- android:动态创建多个按钮 并给每个按键添加监听事件
- 【android学习】安卓设备实现触摸事件的监听,跨进程事件注入
- Android如何监听蓝牙耳机的按键事件