[英]Pattern for using two implementations of one class if no common interface available
假設我們有一些界面。 我們需要使用此接口的兩種不同實現。 存在的實現。 但是有一個問題:實現沒有正式實現該接口。 那是因為它們實際上是兩個獨立的產品,無法使用我們的界面進行調整。
即
interface Action {
void doAction();
}
class ActionFirstImpl {
void doAction() {
...
}
}
class ActionSecondImpl {
void doAction() {
...
}
}
在我們的項目中使用這些實現的最佳方法是什么? 我唯一可以想象的是創建兩個中間類來實現此接口,並從提供的實現中對該類進行子類化。 還有其他想法嗎?
我不會繼承實現類。 我只使用適配器模式並將其委托給實現類:
public final class ActionFirstImplAdapter implements Action {
private final ActionFirstImpl delegate;
public ActionFirstImplAdapter(ActionFirstImpl delegate) {
this.delegate = delegate;
}
@Override
public void doAction() {
delegate.doAction();
}
}
...與ActionSecondImpl
完全相同。
通常,適配器模式需要更多的適應性,而不僅僅是“委托具有完全相同簽名的方法”,但是在這種簡單情況下它仍然可以工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.