【发布时间】:2016-11-02 11:47:39
【问题描述】:
public interface ICar
{
bool IsSpeeds200KMPH(CarData carData);
bool IsABSEnabled(CarData carData);
int doors {get;set;}
int wheels {get;set;}
bool IsABSAdvanced();
bool IsSpeedReaches225();
void drive(CarType car);
}
public class BMW : ICar
{
}
public class Honda : ICar
{
}
// factory class to create car object dynamically
public class CarFactory
{
public ICar CreateCar(CarType car)
{
if(car == TypesOfCars.Honda)
return new Honda;
else if(car == TypesOfCars.BMW)
return new BMW;
//....
}
}
//main() method snippet
CarFactory factory = new CarFactory();
ICar carType = facory.CreateCar(DynamicallyProvided_CarTypeValue);
carType.IsABSEnabled(DynamicallyProvided_carData);
carType.IsABSAdvanced();
在上面的例子中,我实现了策略模式。我的问题是,我有不同的 Car 类实现 ICar 接口。只有当方法 IsABSEnabled() 返回 true 时,才能调用方法 IsABSAdvanced(),否则只能返回 false。因此,如何使一个接口方法(定义)依赖于同一接口中定义的另一种方法(定义)?有没有办法限制接口级别的限制,这样访问 IsABSAdvanced() 的任何人都不知道它实际上在内部检查 IsABSEnabled() 方法。有没有这样的可行性或者我如何才能实现它?
【问题讨论】:
-
你有没有考虑在你的接口和具体类之间添加一个抽象类来处理这个问题?
-
最好在 Code Review 上而不是在这里问。
标签: c# methods interface strategy-pattern