Vehicleと呼ぶ抽象クラスがあります。クラスディーゼル、電気、およびガスは車両を拡張します。これらの3つのクラスには、独自のメソッドと変数、およびVehicleから継承したものがあります。
Diesel、Electric、およびGasオブジェクトの変数をデータベース内の同じテーブルに配置したいと思います。Electricオブジェクトから作成されたレコードには、 Dieselオブジェクトと同じ変数がない空の列がいくつかあるだけです。
行を挿入し、行を更新し、行を取得するメソッドを作成します。これらはすべて、これらのクラスのオブジェクトを引数として受け入れます。
私はそれが何であるかを私が知らないと思うので、私はこの問題に対する最良の解決策を探しています。これまでのところ、いくつかの解決策を考えることができますが、どれも好きではありません。
次の各メソッドを4つ作成します:挿入、更新、削除、および取得/選択。これにより、多くの重複コードが発生します。
public void AddVehicle(Diesel diesel) public void AddVehicle(Electric electric) public void AddVehicle(Gas gas) public Electric ViewVehicles() public Diesel ViewVehicle() public Gas ViewVehicle() public void RemoveVehicle(Diesel diesel) public void RemoveVehicle(Electric electric) public void RemoveVehicle(Gas gas) public void UpdateVehicle(Diesel diesel) public void UpdateVehicle(Electric electric) public void UpdateVehicle(Gas gas)
任意のオブジェクトを受け入れることができるように各メソッドを作成します:(オブジェクトを取得するのではなく、取得できるオブジェクトのリストを指定する方法はありますが、それでもそのうちの1つのみを取得しますか?つまり、public void AddVehicle(Dieseldiesel | |電気||ガスガス))
public void AddVehicle(Object vehicle) public Object ViewVehicle(Object vehicle) public void RemoveVehicle(Object vehicle) public void UpdateVehicle(Object vehicle)
クラス(ディーゼル、電気、またはガス)のいずれかを含むことができる「マスター」クラスを作成します。このクラスは、挿入/更新/表示/削除メソッドに渡されます。(この「master」クラスを引数として受け入れるようにinsert / update / viewメソッドを設定します。)「master」クラスの不完全なコンストラクター:
public MasterVehicle(Diesel diesel) public MasterVehicle(Electric electric) public MasterVehicle(Gas gas)
適切で、よりクリーンで、より理にかなっている他のソリューション。
しかし、#4は何でしょうか?