好的,所以我们内部有一个实用程序,它可以从我们的数据库表和视图生成业务模型类,类似于(但不完全像)ORM。在维护它时,我想到模式中的数据不太可能发生很大变化。但是,该功能可能会。我们可能希望在以后添加其他功能。我们可能想要生成一些这样的功能,并且我们可能想要扩展它。
我们正在构建的类将驻留在类库中以供其他库和应用程序使用。那里没有什么大惊喜。但这里的难点是如何设计生成的类,以便在重新生成类时尽可能少地破坏代码。例如,如果代码已添加到属性(表示数据库表中的列),我们不想丢失它。
因此,有两种方法跃入脑海:
经典继承,整个事情在一个单一的“整体”类中完成,消费者可以自由地覆盖基本实现。但是,这有时会变得有点棘手,并且经常会引起铸造头痛。此外,如果派生类不小心并忘记调用基类功能,事情很快就会出错。
偏班。在这个方案中,我们将业务对象分成不同的部分:属性(映射到列)和行为。行为甚至可以进一步细分为生成行为和自定义行为。如您所见,这种方法的问题在于其固有的复杂性。此外,还有命名问题。
这是我给你们的问题:当您处理这样的场景时(如果有的话),或者如果您遇到这样的场景,您会考虑哪些解决方案,为什么?