图1 命令池类图
一、首先要清楚命令池要实现的功能
学习代码为了帮助分析,大概总结了下,最基本的功能有如下几个:开启执行线程,设置命令回调接口,记录线程对命令的执行时间,命令执行的调度算法。类图就是按照这几个主要的功能来实现的,CThreadRunner类为记录线程运行时间的类。
二、对于设计的一点疑问
为什么CSchedule使用继承,而CCommandPool类使用策略,主要原因可能是CComandPool中没有实现任何一个成员函数,那么继承的复用优势就一点也没有体现出来。如果把CComandPool里面成员函数定义成虚接口,CComandPoolImpl继承实现接口,其实也可以。虽然继承有“强侵入”性质,但是基本上所有的CComandPool的子类都要实现这几个接口,这里的需求改变可能性不大(不是业务逻辑,而是技术上的逻辑实现,除非给命令池增加新功能,可能性不大&