【发布时间】:2012-05-31 05:48:49
【问题描述】:
我正在实施两种算法:
- AlgorithmA 适用于 Vector 值和
- AlgorithmB,适用于 Matrix 值
算法的共同点:
- 两者都是“求和”算法,提供相同的 输入序列。算法在是否考虑上略有不同 是否为特定值。它们在计算上也有所不同 按序列的值执行。
- 两种算法都被同一个对象引用(例如,使用算法进行传输或接收的“
Antenna”)。 - 在这两种情况下,我都希望能够序列化 Vector 或 Matrix 结果。此外,我应该能够使用从较早一代计算的(反序列化的)向量/矩阵值来初始化任何算法。
我首先尝试使用策略模式来实现上述内容,但很快我意识到策略模式可能不是最好的,因为类型/值不同。更复杂的是,我的“Antenna”对象可以在任一方向使用任何算法:
class Antenna
{
private AlgorithmParams _algorithm;
}
class AlgorithmParams
{
private IAlgorithm _transmit;
private IAlgorithm _receive;
}
我觉得它多次重复了“发送”和“接收”的概念(因为实现 IAlgorithm 的 AlgorithmA 本身具有派生类型 'AlgorithmATransmit' 和 'AlgorithmAReceive' 即内部的细微变化相同的算法取决于方向)。
我还希望算法逻辑和序列化数据之间有一个更清晰的分离。
我很高兴听到您对此的意见。谢谢!
【问题讨论】:
标签: c# design-patterns strategy-pattern command-pattern