我一直在阅读Andrei Alexandrescu现代C++设计的书.我有一个关于将类分解为策略的问题.
基本上什么是一个好的政策规模?大多数示例显示了诸如构造,破坏,螺纹安全等部件.简单地把小政策:).
如果我想创建一个io类文件,将文件类型作为策略,例如
struct XX_Type
{
void AsyncRead(callback c);
void* Write(const uint8* image);
}
struct YY_Type
{
void AsyncRead(callback c);
void* Write(const uint8*, image, uint32 offset);
};
template<class FileType = XX_Type>
class File : public FileType
{
virtual void OnDataRead(const uint8*, uint32 size) = 0;
...
};
Run Code Online (Sandbox Code Playgroud)
想法是从文件继承并创建一个不同的模板,以后可以在需要时生成.这是否适合策略,或者我应该将文件句柄传递给全局静态函数,还是应该为每种类型的文件创建一个类?我想确保用户错误很低:)并且策略似乎不易出错.
编辑:
感谢@Claudiordgz提供了一个很好的答案
举另一个例子是采用网络方法.
UPD和TCP非常相似,同时也非常不同.它们都需要一个套接字,但一个是无连接的,另一个是面向连接的.但从逻辑上讲,它们仍然是传输的一部分,如果我想创建一个更高级别的抽象,说一个应用层协议,所以采取@Claudiordgz它至少对我来说是有意义的使用传输层作为一个政策,因为它放在网络堆栈上.