何时直接在类中实现接口以及何时使用它是有用的 是否有更好的接口类型的字段成员?
答案 0 :(得分:2)
这是一个问题,您是否希望您的班级能够做某事,或有某事。
案例1 impl:
public class Car : ICanPlayRadio
{
// impl. ICanPlayRadio
public void TurnOnRadio() { ... }
}
案例2 impl:
public class Car
{
public IRadio Radio { get; set;}
}
用例1:
Car myCar = new Car();
myCar.TurnOnRadio(); // my car can turn on the radio
用例2:
Car myCar = new Car();
myCar.Radio.TurnOn(); // my car has a radio, it can be turned on
在这个例子中,案例2对我来说更有意义。这一切都取决于你的模型。
<强>更新强>
“使用无线电接口的好处是什么?”
使用Radio属性的接口的好处是car类可以接受IRadio实例(通常传递给构造函数)。因此,您可以创建两个具有两种不同无线电实现的汽车,但是当涉及打开无线电时,您可以确定它们都能够完成接口的b / c工作,作为可以完成的工作的合同。
public class FMRadio : IRadio { ... }
public class AppleCarPlay : IRadio { ... }
Car volvo740 = new Car(new FMRadio());
Car audiA7 = new Car(new AppleCarPlay());
volvo740.Radio.TurnOn(); // turns on last FM radio frequency
audiA7.Radio.TurnOn(); // plays my favorite spotify playlist