【发布时间】:2014-10-27 01:32:48
【问题描述】:
我已经在网上寻找策略模式的好例子,但我发现的例子都是简化的方法。
我想实现 MyMatrix 类。 为此,我使用了策略模式,即我创建了一个 Matrix 类和两个继承类:RegMatrix 和 SparseMatrix,它们的实现不同。
我知道 MyMatrix 应该持有一个指向 Matrix 的指针(我们称之为 *_matrix),然后如果我想实现 MyMatrix 的“打印”函数,我应该这样做:_matrix->print() 然后它选择适当的实现。
唯一我不明白的是: 在获取数组和矩阵大小的 MyMatrix 的构造函数中,是否需要选择 某个 Matrix 类型的对象并对其进行初始化? 我的意思是,我应该这样做吗:
MyMatrix::MyMatrix(double arr[], unsigned int colSize, unsigned int rowSize)
{
_colSize = colSize;
_rowSize = rowSize;
_matrix = new RegMatrix(arr, colSize, rowSize);
}
【问题讨论】:
-
由于前导下划线保留在全局命名空间中并且对于各种名称的主机,使用下划线后缀比使用下划线前缀更安全
标签: c++ inheritance design-patterns polymorphism strategy-pattern