我正在开发一个提供与图像/信号处理和其他东西相关的不同功能的 C++ 库。它基本上是一个供开发人员进一步使用的开发库。我希望它尽可能方便易用。我有 3 种不同的模型:
型号 1:
包含库的所有功能的单个大型命名空间。例如,C++ 标准库在namespace std
. 或者 OpenCV 在namespace cv
.
namespace library
{
//all classes, variables, functions, datatypes are present inside this namespace
}
型号 2:
父命名空间,根据功能进一步细分为子命名空间。例如 .NET Framework 的父级namespace System
包含namespace Collections
等namespace Windows
...
namespace library
{
//datatypes go here
namespace group1
{
//functions related to group 1
}
namespace group2
{
//functions related to group 2
}
.
.
.
}
模型 3:
与模型 2 几乎相同,但包含作为static
类成员而不是名称空间的函数。
namespace library
{
//datatypes go here
class group1
{
public:
static function1();
static function2();
}
class group2
{
public:
static function1();
static function2();
}
}
我需要推荐哪种设计模型最好?还有其他更好的方法吗?目前我对第二种模式感到满意。