【问题标题】:Undelegate Method取消委托方法
【发布时间】:2011-03-23 15:37:04
【问题描述】:

我正在尝试从一个第 3 方库转换到另一个库(gwt-extgxt)。为了帮助最大限度地减少前期更改并确保一致性和可测试性,我们决定创建代理类来实现旧 API 并将它们映射到新 API。

例如,Panel 之类的内容现在可能是 ContentPanel。旧的 Panel 可能有一个名为 setEl(String name) 的方法,现在应该映射到 setElement(String name)。为此,我们创建了一个包含ContentPanelPanel 类。然后在 Eclipse 中,我们调用 Source -> Generate Delegate Methods... 来创建两个 API 可能共有的方法。然后,我们创建的任何丢失或更改的 API 都包含在我们的 Panel 类中,并传递给我们包含的 ContentPanel 中的适当处理程序。完成此操作后,我们希望重构我们的类(基本上是内联)并让所有内容直接调用“ContentPanel”上的方法,并在调用旧方法的每个位置使用我们在手动实现的方法中所做的任何魔法.

最好的方法是什么?我认为 Eclipse 中已经有一个重构可以处理这个问题,但我没有找到它。

当然,如果您认为有更好的方法来进行这样的迁移,我也愿意就此提出建议。

【问题讨论】:

    标签: java eclipse delegates refactoring migration


    【解决方案1】:

    IntelliJ IDEAinlining refactoring 在您的情况下可能非常有用。不确定 Eclipse 是否有,但也许有一个可以内联的插件?

    【讨论】:

    • Eclipse 确实有内联,但它并没有按照我们需要的方式工作。我认为这个策略有缺陷。
    【解决方案2】:

    答案是:不要。使用目标对象作为组件然后委托是错误的策略。我们最好让我们的代理扩展我们的目标 API,然后实现新 API 中缺少的任何方法并将它们映射到新 API。然后根据需要进行内联。

    【讨论】:

    • 我们继续使用这个解决方案,回头看,我认为这是正确的方法。我个人认为它为我们节省了很多时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多