【问题标题】:Separate interfaces and implementation emf ecore分离接口和实现 emf ecore
【发布时间】:2016-09-05 09:06:48
【问题描述】:

想象以下情况:我们在 emf 模型中定义了带有接口 IntA 的捆绑 A 和带有类 classB 的捆绑 B。当我们从 A 包中的 emf 模型生成代码时,我们将获得分别包含接口声明和实现的 IntAIntAImpl 文件。

现在假设我们希望IntAImpl 中的某些方法实现可以与类classB 一起使用。我们需要将捆绑包B 添加到捆绑包A 的所需捆绑包中。我们还希望classB 可以使用来自捆绑包A 的接口IntA 进行操作。这使我们将捆绑包A 添加到捆绑包B 所需的捆绑包中。我们刚刚得到了循环依赖。

如果接口和实现在不同的包中声明,一切都会好起来的——比如A.intA.impl。这样,BA.impl 将依赖于 A.intA.impl 将依赖于 B - 没有循环。

现在问题来了——是否可以让 emf 在不同的包中生成接口和实现?如果不是,那么它应该如何处理这种问题?

【问题讨论】:

    标签: java eclipse code-generation e4 emf


    【解决方案1】:

    2008 年有一篇旧帖子回答了这个问题:

    https://www.eclipse.org/forums/index.php?t=msg&th=134600/

    简而言之:这是不可能的。

    在任何情况下,您都声明“IntAImpl 可以与 classB 一起使用”。那么,这是您心目中不会发生的理论上的情况,还是您确定这种情况会发生?

    【讨论】:

    • 有时我会得到与描述相同的循环依赖。是的,在实践中,总有一种方法可以重新设计你的类以摆脱循环依赖。但是如果实现和接口从一开始就分开,就不会有任何依赖关系,所以我只是想知道为什么它们不是。
    • 我看到了这篇文章,但是限制导出的包并不能解决我的问题中描述的问题。
    猜你喜欢
    • 2014-04-24
    • 2021-12-18
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多