私は今日、 Composition over Inheritanceについて少し学びました。最近書いたものにその概念を適用するべきかどうか疑問に思っていました。
以前は、いくつかの小さな違いを除けば、ほぼ同じ2 つのクラスがありました。それらにはいくつかの基本的なデータベース アクセス機能が含まれていましたが、異なる (しかし関連する) オブジェクト タイプで動作していました。したがって、以前は次のような構造のクラスがありました。
class BallMillDBHandler{
public BallMillDBHandler(){ ... }
public void InsertTool(BallMill tool) { ... }
public BallMill QueryTool(string toolID) { ... }
public void UpdateTool(BallMill tool) { ... }
public void DeleteTool(string toolID) { ... }
}
class DiamondToolDBHandler{
public DiamondToolDBHandler(){ ... }
public void InsertTool(DiamondTool tool) { ... }
public DiamondTool QueryTool(string toolID) { ... }
public void UpdateTool(DiamondTool tool) { ... }
public void DeleteTool(string toolID) { ... }
}
ほとんど重複しているメソッドの大部分をクラスにリファクタリングしBaseToolDBHandler()
、他の 2 つのメソッドから継承して、データベース パラメータ自体へのアクセスの違いを処理するためのいくつかの抽象メソッドとプロパティを提供しました。
BaseToolDBHandler
代わりにヘルパー クラスを作成し、データベース アクセサー内に含めて、以前は抽象化されていたプロパティ/メソッドに共通のインターフェイスを提供することは理にかなっていますか? それとも継承のケースとして残すべきですか?