命令池的实现
来源:互联网 发布:淘宝大促活动有哪些 编辑:程序博客网 时间:2024/06/15 09:39
图1 命令池类图
一、首先要清楚命令池要实现的功能
学习代码为了帮助分析,大概总结了下,最基本的功能有如下几个:开启执行线程,设置命令回调接口,记录线程对命令的执行时间,命令执行的调度算法。类图就是按照这几个主要的功能来实现的,CThreadRunner类为记录线程运行时间的类。
二、对于设计的一点疑问
为什么CSchedule使用继承,而CCommandPool类使用策略,主要原因可能是CComandPool中没有实现任何一个成员函数,那么继承的复用优势就一点也没有体现出来。如果把CComandPool里面成员函数定义成虚接口,CComandPoolImpl继承实现接口,其实也可以。虽然继承有“强侵入”性质,但是基本上所有的CComandPool的子类都要实现这几个接口,这里的需求改变可能性不大(不是业务逻辑,而是技术上的逻辑实现,除非给命令池增加新功能,可能性不大,如果真的有变动,那么可以使用桥接模式,可以使用抽象和具体实现两个维度的变化,如果CComandPoolImpl的实现有改变,那么可以继承一个类重写)。同理CThreadPool也是。
类图中,其实CComandPoolImpl并不是直接依赖于CCommandHandler和CCommandScheduler,这两个类CCommandRunner直接依赖,那么设计的时候完全可以让CComandPoolImpl不依赖于这个类,为什么类中还要依赖?我理解可能是有点类似于外观模式,如果CComandPoolImpl不依赖于那两个类,那么用户就得知道CComandRunner依赖于那两个类,使用的时候要先把CCommandRunner设置好,在设置CComandPoolImpl,但是如果设计成类图中那样,虽然类中要多写一点点,但是用户不需要知道有什么CComandRunner类,直接用CComandHandler和CComandScheduler就可以构造CCommandPool了,而在CComandPoolImpl内部实现CCommandRunner的构造与设置。
- 命令池的实现
- 线程池与cp命令的实现
- U_BOOT_CMD命令的实现
- U_BOOT_CMD命令的实现
- ping 命令的实现
- U_BOOT_CMD命令的实现
- ICMP_ping命令的实现
- sort命令的实现
- U_BOOT_CMD命令的实现
- ls命令的实现
- ping命令的实现
- ping 命令的实现
- cp命令的实现
- U_BOOT_CMD命令的实现
- who命令的实现
- cp命令的实现
- U_BOOT_CMD命令的实现
- U_BOOT_CMD命令的实现
- 【学习笔记】cocos2d-x 粒子对象
- 病毒
- Android开发 设置颜色渐变
- 读取指定目录下的所有文件
- PHP 使用 mcrypt 进行加密解密的函数
- 命令池的实现
- Android登陆界面设计demo
- Android电话拨号UI分析
- 用java实现链表并解决约瑟夫环问题
- 使用Crashlytics来保存应用崩溃信息
- 三个和尚挑水吃
- 目标检测中背景建模方法 总结
- HDU 1003 Max Sum(连续子段和)
- Health Monitor和ADR