在运行时禁用已实现的接口功能

时间:2014-04-09 00:54:14

标签: c# interface runtime

让我们说我有一个汽车游戏,我们在汽车设置车库。默认模型预装了这些附件:

public class MyCar : IMotor, IBrakes, IAlarm
{
   public void Run(){...};
   public void Stop(){...};
   public void ProtectFromThieft(){...};
}

public interface IMotor
{
   void Run();
}

public interface IBrakes
{
   void Stop();
}

public interface IAlarm
{
   void ProtectFromThieft();
}

游戏玩家已经实例化了一个MyCar对象,然后他决定将alarm卖回车库以获得现金。

如何在运行时的具体IAlarm实施中停用MyCar的功能?

1 个答案:

答案 0 :(得分:1)

此处使用合成而不是继承。你的汽车是一个电机,是一个警报器,并且刹车,而它应该有它们。这种脱钩使您想要做的事情变得更加容易。

请参阅Prefer composition over inheritance?