目前,我一直在阅读“ Apache Thrift ”的源代码。更具体地说,用C++实现的代码,放在这个路径:“thrift-0.9.1.tar\thrift-0.9.1\lib\ cp”。
我一直想知道为什么“TProtocol 类”是这样设计的:
我们知道“TProtocol Class”是一个抽象类。而且这里有详细的分析:“ developermemo ”。并且说“还定义了相应的抽象工厂类,用于生产具体的协议对象,这是最常用的设计模式抽象工厂设计模式。”
但是,我想知道为什么他们定义一个函数对应的纯虚函数被调用。例如:
virtual uint32_t writeSetEnd_virt() = 0;
virtual uint32_t writeBool_virt(const bool value) = 0; //Pure virtual function
uint32_t writeBool(const bool value) { //
T_VIRTUAL_CALL();
return writeBool_virt(value); //call the "interface"
}
为什么我们需要“writeBool()”。好像没什么用。为什么我们不直接定义“纯虚函数”和“派生类”重写这些接口。