gpt4 book ai didi

c++ - 理解策略模式

转载 作者:行者123 更新时间:2023-11-30 01:51:50 25 4
gpt4 key购买 nike

我在整个网络上寻找策略模式的好例子,但我发现的例子是简化的方式。

我想实现 MyMatrix 类。为此,我使用了策略模式,即我创建了一个 Matrix 类和两个继承类:RegMatrix 和 SparseMatrix,它们在实现上有所不同。

我知道 MyMatrix 应该持有一个指向 Matrix 的指针(我们称它为 *_matrix),然后如果我想实现 MyMatrix 的函数“print”,我应该这样做:_matrix->print() 然后它选择适当的实现。

我唯一不明白的是:在 MyMatrix 的构造函数中,它获取一个数组和矩阵大小,我是否需要选择某个 Matrix 类型的对象并初始化它?我的意思是,我应该这样做吗:

MyMatrix::MyMatrix(double arr[], unsigned int colSize, unsigned int rowSize)
{
_colSize = colSize;
_rowSize = rowSize;
_matrix = new RegMatrix(arr, colSize, rowSize);
}

最佳答案

常见的变体是将接口(interface) (Matrix) 的实例传递给构造函数。

MyMatrix::MyMatrix(const Matrix& behaviour):
colSize(behaviour.getCols()), rowSize(behaviour.getRows()), matrix(behaviour)
{
}

// creation
MyMatrix m(SparseMatrix(4, 2, arr));

使用初始化器。不要使用多余的下划线。见阿尔夫的评论。可能不需要 colSize 和 rowSize,因为它们在 Matrix 实现中是重复的。

关于c++ - 理解策略模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25629247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com