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