我有兩個類LightA和LightB。我有LightB的源代碼,但沒有LightA的源代碼。我用LightDimDip擴展了LightB。即LightDimDip:extends LightB
。現在我需要將DimDip功能應用於lightB。幫助我避免多重繼承。幫助我獲得適當的oo設計
任何人都可以建議良好的面向對象設計。
我再次提醒你們,我不能修改LightA。
我有兩個類LightA和LightB。我有LightB的源代碼,但沒有LightA的源代碼。我用LightDimDip擴展了LightB。即LightDimDip:extends LightB
。現在我需要將DimDip功能應用於lightB。幫助我避免多重繼承。幫助我獲得適當的oo設計
任何人都可以建議良好的面向對象設計。
我再次提醒你們,我不能修改LightA。
燈具有通用接口嗎?在這種情況下,我想你可以使用Decorator模式在這裏
interface ILight { int GetIntensity() }
class LightA : ILight { int GetIntentisy(){ return 10; } }
class LightB : ILight { int GetIntensity(){ return 15; } }
class DimLight : ILight {
public DimLight(ILight inner){}
//Add behaviour inner
int GetIntensity(){ return inner.GetIntensity()/2; }
}
ILight dimLightA = new DimLight(new LightA())
ILight dimLightB = new DimLight(new LightB())
然後你就可以把光的行爲在DimLight類,並將其應用到實現iLight公司任何類別。
這個問題說明LightA類在這一點上是不可修改的。 – 2010-07-13 09:30:37
@ Whiskey-Tango-Foxtrot這就是爲什麼我問在響應的第一行是否有共同的界面。 – amarsuperstar 2010-07-13 09:31:57
我有一個根類(NSobject) – shakthi 2010-07-14 05:35:00
我建議你從好的類名開始。 LightA,LightB和LightDimDip不會告訴任何人他們的用途! – 2010-07-13 09:10:16