在类中或作为成员实现接口

时间:2017-05-11 09:37:29

标签: c# oop

何时直接在类中实现接口以及何时使用它是有用的 是否有更好的接口类型的字段成员?

1 个答案:

答案 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