我有两个类LightA和LightB。我有LightB的源代码,但不是LightA的源代码。我用LightDimDip扩展了LightB。即LightDimDip:extends LightB
。现在我还需要将DimDip功能应用于lightB。
任何人都可以提出良好的OOP设计。
我再次提醒大家,我无法修改LightA。
答案 0 :(得分:2)
灯具有通用接口吗?在这种情况下,我猜你可以在这里使用装饰模式
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的类。