java - 接口(interface)是否通过代码重复来解决 DDD?

标签 java php c++ interface

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/

相关文章:

java - ListActivity TwoLineListItem 备选方案

php - 未定义的属性 : > stdClass error when using date type column on Laravel. 我该如何解决?

c++ - 您如何直接从 Windows 上的物理内存中读取?

Visual Studio Express 2015 中的 C++ 新文件问题

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

java - 如何测试方法不会抛出异常?

java - FileInputStream 和 OutputStream 无法在文件中读取和写入对象

java - ClassOne 中的 doSomething() 无法实现 InterfaceOne 中的 doSomething(),尝试分配较弱的访问权限,已公开

php - 将 mysql 的 php 代码转换为 sqlite 时出现问题

php - 洋红色。按位置对产品集合进行排序