私はジェネリックVector<T>
クラスとジェネリックMatrix<T>
クラスを持っていますが、両方のクラスにインターフェイスを実装させるのは良い考えではないかと思いました。
基本的に、私は2つのアルゴリズムを実装しています。AlgorithmAとAlgorithmBは、どちらも非常によく似た操作(リセット、平均など)を実行しますが、アルゴリズムが異なり、異なる構造で
AlgorithmA
動作Vector<double>
しAlgorithmB
ますMatrix<Complex>
。
私がこれまでに持っているデザイン:
abstract class AlgorithmArray
{
// Operator overloading
}
class AlgorithmAArray : AlgorithmArray
{
private Vector<double> _vector;
// Overrides
}
class AlgorithmBArray : AlgorithmArray
{
private Matrix<Complex> _matrix;
// Overrides
}
(抽象クラスの代わりに)インターフェース' 'AlgorithmAArray
から派生し、それを実装したいと思います。とにかく、これらのアルゴリズムは、2つの場所間の送受信をシミュレートするために使用されます。Vector<T>
IAlgorithmArray
public class CommunicationParameters
{
private AlgorithmArray _transmission;
private AlgorithmArray _receiving;
public void Compute()
{
if(_transmission != null)
_transmission.Compute();
if(_receiving != null)
_receiving.Compute()
}
}
私の問題に取り組むためのより良い方法はありますか?
注:基本クラスAlgorithmArray
は、演算子/クローン作成などのメソッドの多くを複製します。おそらくジェネリックを使用して、これを回避できると思いますか?
ありがとう !