在阅读SRS源码时,作者大量使用如下的方式实现接口和实现间的分离,并调用接口中的函数,相比自己之前熟悉的使用std::bind
和std::function
实现回调方式有些差异。于是将作者的意图进行简化,便于理解。
简化后的代码如下:
1 | class IThreadHandler |
IThreadHandler
表示接口类,需要由子类实现的函数定义为纯虚函数。
在Thread
类中通过接口对象handler
调用IThreadHandler
接口中对象。
Listener
类继承接口类,并实现接口类中的纯虚函数。在Listener
类的构造函数中将真正的实现对象this
指针初始化到Thread
类中,供Thread
回调使用。
在整个的实现机制中,通过IThreadHandler
接口对象,让Thread
和Listener
解耦。