倉庫を持っています。ボックスの場所を名前、説明、UPC などで検索したい場合があります。これらの各検索メソッドは、同じさまざまなプライベート メソッドを呼び出して、データの検索に役立つ情報を見つけます。
たとえば、upc はプライベート メソッドを呼び出して行 ID を検索します。name も X もそうです。したがって、それらすべてに対してそのメソッドが必要です。その行 ID を使用して、シェルフの場所を見つけることができます (これは単なる例です)。
しかし、私の質問は、さまざまな方法でボックスを検索しているため、抽象クラス (または他の何か) を使用する必要があるかどうかです。
言い換えれば、ルックアップ用の私のコードは、UPC とロケーション用に非常に似ているとします。各メソッドは何かを呼び出すことができます (select * from xxxx where location =、または select * from xxxx where upc =)。同じクラスに 2 つの異なるメソッドを作成することもできます
LocateByUPC(string upc)...
LocateByLocation(string location)...
LocateByDescription(string description)
... 繰り返しますが、これは 1 つの大きなクラスになります。
保持できるスーパークラスが必要な理由はありますか
abstract class MySuper
{
properties...
LocateBox(string mycriteria)...
}
それを継承して、必要なバージョンの LocateBox メソッドをオーバーライドする 2 番目のクラスを作成しますか?
OODに見える以外に、なぜこれをやりたいのかわかりません。これは、正当な理由があれば、これをやりたいということを意味します。しかし、私は利点がないことを知っています。クラスがどんどん大きくなっていくのがわかっただけで、メソッドの名前と少しのコードを少し変更しただけで、継承の方が良いのではないかと思いました。
それが重要な場合はC#を使用してください。
編集 - ソースがなく、クラス定義が含まれている .dll だけを誰かに渡した場合、これを行いますか? クラス定義。私のプロパティなどと、どのメソッドをオーバーライドするかを教えてくれます。