私が実装している 2 つのアルゴリズムがあります。
- ベクトル値と動作するアルゴリズム
- マトリックス値で動作するAlgorithmB
アルゴリズムの共通点:
- どちらも同じ入力シーケンスで提供される「合計」アルゴリズムです。アルゴリズムは、特定の値を考慮するかどうかによって若干異なります。また、シーケンスの値ごとに実行される計算も異なります。
- 両方のアルゴリズムは、同じオブジェクト (たとえば、
Antenna
送信または受信にアルゴリズムを使用する ' ') によって参照されます。 - どちらの場合も、Vector または Matrix の結果をシリアル化できるようにしたいと考えています。さらに、以前の世代から計算された (逆シリアル化された) ベクトル/行列値を使用して、任意のアルゴリズムを初期化できるはずです。
私は最初に Strategy パターンを使用して上記を実装しようとしましたが、すぐに、さまざまな型/値のために戦略パターンが最適ではない可能性があることに気付きました。さらに複雑なことに、私の ' Antenna
' オブジェクトはどちらの方向にも任意のアルゴリズムを使用できます。
class Antenna
{
private AlgorithmParams _algorithm;
}
class AlgorithmParams
{
private IAlgorithm _transmit;
private IAlgorithm _receive;
}
これは、「送信」と「受信」の概念を複数回複製していると感じています(AlgorithmA
IAlgorithm を実装する は、それ自体が派生型 ' AlgorithmATransmit
' と ' ' を持っているためAlgorithmAReceive
です。つまり、方向に応じて同じアルゴリズム内でわずかに変化します)。
また、アルゴリズム ロジックとシリアル化されたデータをより明確に分離したいと考えています。
これについてご意見をお聞かせいただければ幸いです。ありがとう !