AccountController 不能同时扩展 BaseAccount 和 BaseController。如果我将所有 BaseAccount 或 BaseController 方法设为空,我可以有一个接口(interface),但如果我在两个不同的地方实现该接口(interface),也就是说,我签订契约(Contract)在两个不同的地方实现一个方法,我将有重复的代码。接口(interface)是否解决了代码重复的 DDD?
interface A {
function doStuff() {
}
}
class B implements A {
function doStuff() {
// a code
}
}
class C implements A {
function doStuff() {
// the same code!!!
}
}
最佳答案
接口(interface)解决了 DDD 问题,因为 DDD 问题与实现的模糊性有关。接口(interface)不包含实现,因此如果您从单个类和多个接口(interface)继承,就不会出现这种歧义。
在您描述的情况下,如果您在 BaseController 和 BaseAccount 中使用具有相同签名的方法,则可以获得 DDD。如果你只继承其中一个,你就不会遇到这个问题。
也许您可以重新考虑为什么要同时创建帐户和 Controller 。在我看来,您似乎让一个类(class)做的事情太多了。
顺便说一句,我建议使用像“Controller”这样的名称,而不是“BaseController”,因为这样做会更自然:
Controller con = ControllerFactory.Create();
相对于
BaseController con = ControllerFactory.Create();
在此示例中,“con”不一定是 BaseController。它可以是任何 Controller 子类。
关于java - 接口(interface)是否通过代码重复来解决 DDD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1679858/