我有我想要一個生成的對象:Java繼承和包裝
- 保留現有的功能,而無需注入構造函數和重寫每一個方法調用
injectedObject.sameMethod()
。 - 向該生成的對象添加其他功能而不修改生成的對象。
添加更多功能。
例如:
public class GeneratedObject {
public String getThis() { ... }
public String getThat() { ... }
}
public interface ObjectWrapper {
String doThisWithThat();
}
public class ObjectWrapperImpl extends GeneratedObject implements ObjectWrapper {
String doThisWithThat() { ... }
}
然而,向下轉換是不允許的,什麼是不重寫一堆的冗餘代碼來包裝對象的正確實施?
'來生成對象添加額外的功能,而無需修改。如果我理解正確的產生object.',這聽起來像'我要一張桌子加進了一個房間而不觸及room.'我希望的矛盾是顯而易見的那裏。另外,我不完全理解這個問題。這個例子如何相關? – cklab
組成而不是繼承也許? – assylias
@cklab我想說的,以適應你的比喻,是'我想在我的房間外面添加一張桌子,同時仍然可以訪問我的房間' – shuniar