【问题标题】:Does this represent decoupling and correct use of interface这是否代表解耦和正确使用接口
【发布时间】:2016-01-29 18:50:41
【问题描述】:

我编写了一个简短的程序来测试我对接口和解耦的理解。你能告诉我我的想法是否正确。据我了解,当多个类可以实现相同的方法时,接口的抽象方法很有用。然后解耦允许类不相互依赖。因此,ICar 接口中定义的 HonkHorn() 方法由两个类实现。然后,每个类都包含一个额外的方法,可用于执行特定于它所在类的操作。我的理解是否正确?

 public partial class Form1 : Form
{
    // Constructor
    public Form1()
    {
        InitializeComponent();

        SportsCar SportsCar = new SportsCar();
        CheapCar CheapCar = new CheapCar();
        label1.Text = SportsCar.HonkHorn();
        label2.Text = CheapCar.HonkHorn();
    }


}

interface ICar
{
    string HonkHorn();

}

public class SportsCar : ICar
{
    public string HonkHorn()
    {
        return "Horn honked on Sports Car";
    }

    public void DetermineHighestSpeed()
    { 
        // Calculation to determine highest speed on a sports car
    }

}

public class CheapCar : ICar
{
    public string HonkHorn()
    {
        return "Horn honked on Cheap Car";
    }

    private void FindRustSpots()
    { 
        // Algorithm to find rust spots
    }
}

【问题讨论】:

  • 请注意,实现HonkHorn 方法已经特定于它所在的类

标签: c# interface decoupling


【解决方案1】:

您正确使用了界面。但是您的样本并不代表解耦,即使这是一个好的开始。您用示例代码描述的是通过接口的多态性。

静态类型语言中耦合的定义是当一个类的实现需要编译另一个类时。

您的示例类 Form1 可以通过使用 ICar 接口和依赖倒置原则完全解耦。 (http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod)

【讨论】:

  • 这能回答你的问题吗?详细说明或要求提供更多参考资料。
  • 感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-26
  • 2021-12-02
相关资源
最近更新 更多