我今天刚刚学到了一些关于Composition over Inheritance的知识。我想知道我是否应该将这个概念应用到我最近写的东西上。
我们之前有两个几乎相同的类,除了一些小的差异。它们包含一些基本的数据库访问功能,但对不同(但相关)的对象类型进行操作。因此,我们之前的课程结构如下:
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()
类,并从其他两个继承它,提供一些抽象方法和属性来处理访问数据库参数本身的差异。
BaseToolDBHandler
将辅助类改为包含在数据库访问器中并为它们提供先前抽象属性/方法的通用接口是否有意义?还是我应该把它作为继承的情况?