模拟Listener对button的监听过程
来源:互联网 发布:2016淘宝客还能赚钱吗 编辑:程序博客网 时间:2024/05/29 07:20
今天突然冒出一种想法,看看自己到底理解不理解平时对各种按钮实现监听的过程,就用c++简单实现了一下!
首先是写一个抽象的Listener类,java中有接口,C++中就只能使用抽象类了。
Listener类的.h文件,只需要看.h即可,因为在.cpp中没有需要实现的方法。
#ifndef LISTENER_H#define LISTENER_H#include "Button.h"class Button; //需要使用button类 因为在点击的时候会获取Button对象 // 因为Button类中也要使用Listener类,如果仅仅互相包含头文件会报错class Listener{ public: Listener(); virtual ~Listener(); virtual void onClicked(Button button)=0; //onClicked事件,需要在派生类中重写};#endif // LISTENER_H
Button类的.h文件
#ifndef BUTTON_H#define BUTTON_H#include "Listener.h"class Listener;class Button //这个例子就是模仿,所以Button类没有继承类似View的基类{public: Button(); ~Button(); int getId();//获取Button的ID void setId(int id);//设置Button的ID void setOnClickListener(Listener *p);//为Button设置监听器 void onPress();//模拟现实中按下Button按钮的行为private: int id;//ID Listener *pListener;//监听器};#endif // BUTTON_HButton类的.cpp文件
#include "Button.h"Button::Button(){}int Button::getId(){ return id;}void Button::setId(int id){ this->id=id;}void Button::setOnClickListener(Listener *listener){ this->pListener=listener;}void Button::onPress(){ pListener->onClicked(*this);}Button::~Button(){}自己编写了一个main函数测试了一下,跟预期的想法差不多
#include <iostream>#include <string>#include "Button.h"#include "Listener.h"using namespace std;class myListener : public Listener{ public : virtual void onClicked(Button b) { cout<<"Button "<<b.getId()<<" clicked"<<endl; }};int main(){ Button btn1,btn2; myListener listener; btn1.setId(1); btn2.setId(2); btn1.setOnClickListener(&listener); btn2.setOnClickListener(&listener); btn1.onPress(); btn2.onPress(); return 0;}程序输出:
Button 1 clicked
Button 2 clicked
总结:这个如果想清楚了,就可以更好的理解监听者模式,也可以对c++里的virtual动态多态有更好的理解,virtual函数如果在函数后面写上=0将会变成纯虚函数~
0 0
- 模拟Listener对button的监听过程
- 模拟Button监听
- 关于Button的监听
- Android的Button监听
- Button的监听方法
- 自定义带Button的通知,并实现对Button的监听
- 各种 Listener 监听的动作
- Listener(监听)
- button的多种监听方法
- android Button 的监听类
- 观察者模式的理解(感觉还好,有时间看下 Button的监听过程)
- ORACLE 监听LISTENER设置的粗略介绍
- Oracle的监听(listener)到底是什么
- [JAVA]Listener监听模式的学习
- javaweb listener 对象的创建销毁-监听
- android Button用户交互——监听机制调用过程
- 实现对HTTP协议工作过程的模拟
- GPIO模拟IIC过程中对IIC的理解
- jvm优化
- (4.1.28.1)HTTP通信之HttpClinet保持登录状态问题
- 压缩文件最基本原理——map实现
- UIAlertView的一些使用
- android ftp多线程多任务下载时的listview滑动列表错乱解决方法
- 模拟Listener对button的监听过程
- jvm优化检测多线程竞争
- #第二周1000题解#
- 最大连续子段和、M子段和
- 年轻的时候需要更加的奋斗!
- Android FlowLayout
- (4.1.28.3)第二种方法HttpClient.setCookieStore(mCookieStore)实现的HTTP工具类
- java的回调函数
- 卡特兰数