Java中的策略模式有更好的替代方法吗?

Twi*_*Sun 2 java

我有两套Java API执行相同的工作但是针对不同的系统平台,除了它们具有不同的包名称(并且它们没有实现相同的接口)之外,它们的所有API函数定义完全相同.我没有足够的自由来改变API的代码,所以我无法让它们实现任何接口.

我想在这些API之上编写代码,并希望这些代码可用于两个API集(类似于策略设计模式).

实现这一目标的最佳方法是什么?我不想创建接口和适配器类,因为有超过20种API方法.

Pet*_*ler 5

尽管不是原始问题想要的,但我会选择两种API的适配器.您的适配器将实现您自己的界面,然后可以在策略中使用.

这也使您可以选择为自己需要的操作提供自己的界面和描述性名称,并完全抽象出底层API.也许你不需要全部20种方法?

提示:

  • 在Eclipse中,Source菜单中有一个函数来生成委托方法,只要您有一个要委托的类型的字段,就会为您创建20个委托方法.
  • 要提取接口,您可以使用Refactor/extract接口创建和实现接口.

另一种方法是使用java.lang.reflect.Proxy(如铍的解释).代理的实现很简单,但您需要手动创建接口.

  • 是的,在创建委托方法后使用"重构/提取接口" (2认同)