想象有通過合成圖案佈置的兩個接口,它們中的一個其它方法中的dispose
方法:動作-3:重構接口繼承擺脫曖昧參考誤差的
interface IComponent extends ILeaf {
...
function dispose() : void;
}
interface ILeaf {
...
}
一些實現方式中有更多的一些共同的東西(比如一個id
),所以有兩個接口:
interface ICommonLeaf extends ILeaf {
function get id() : String;
}
interface ICommonComponent extends ICommonLeaf, IComponent {
}
到目前爲止好。但其中也有一個dispose
方法另一個界面:
interface ISomething {
...
function dispose() : void;
}
和ISomething
由ICommonLeaf繼承:
interface ICommonLeaf extends ILeaf, ISomething {
function get id() : String;
}
只要dispose
方法在其上實現了接口的實例調用時,由於ISomething
有一個名爲dispose
的方法,並且ILeaf
也有一個dispose
方法,它們都生活在不同的接口中(IComponent, ISomething
)在ICommonComponent的繼承樹中。
我不知道如何處理,如果
- 的
IComponent
的ILeaf
和ISomething
不能改變這種狀況。 - 該複合結構還必須努力爲
ICommonLeaf
& - 實現和
ICommonLeaf
&必須符合ISomething
類型。
這可能是一個actionscript-3特定問題。我還沒有測試過其他語言(例如java)如何處理這樣的東西。
是的,IDisposable接口肯定能解決這個問題,但不幸的是我沒有訪問IComponent和ISomething接口來提取dispose。 – maxmc 2010-05-16 12:32:00
+1爲鑽石問題提示 – maxmc 2010-05-16 12:33:43