当前位置:  开发笔记 > 编程语言 > 正文

接口的好例子

如何解决《接口的好例子》经验,为你挑选了4个好方法。

我在一家公司工作,有些人要求在我们的代码中使用接口(Visual Studio C#3.5).

我想要求Iron Clad推理接口是必需的.(我的目标是证明接口是编程的正常部分.)

我不需要说服,我只需要一个好的论据来用于说服别人.

我正在寻找的那种论点是基于事实的,而不是基于比较的(即"因为.NET库使用它们"是基于比较的.)

因此,针对它们的论点是:如果一个类被正确设置(具有其公共和私有成员),那么接口只是额外的开销,因为使用该类的那些仅限于公共成员.如果您需要一个由多于一个类实现的接口,那么只需设置继承/多态.



1> tvanfosson..:

代码解耦.通过对接口进行编程,可以使用接口与实现接口的代码将代码分离.这允许您更改实现,而无需使用它重构所有代码.这与继承/多态相结合,允许您交替使用任何可能的实现.

模拟和单元测试.当方法是虚拟的时,模拟框架最容易使用,默认情况下,这些方法是通过接口获得的.这实际上是我创建界面的最大原因.

定义可能适用于允许它们互换使用的许多不同类的行为,即使类之间没有关系(定义的行为除外).例如,Horse和Bicycle类都可以使用Ride方法.您可以定义定义Ride行为的接口IRideable,并且使用此行为的任何类都可以使用Horse或Bicycle对象,而不会强制它们之间的不自然继承.


作为Horse/Bicycle评论的补充,关于接口的好处是能够在不限制继承的情况下概括类的操作:http://stackoverflow.com/questions/558152/asp-net-unfamiliar-with-interfaces/558342#558342

2> JP Alioto..:

因此,针对它们的论点是:如果一个类被正确设置(具有其公共和私有成员),那么接口只是额外的开销,因为使用该类的那些仅限于公共成员.如果您需要一个由多于一个类实现的接口,那么只需设置继承/多态.

请考虑以下代码:

interface ICrushable
{
  void Crush();
}

public class Vehicle
{
}

public class Animal
{
}

public class Car : Vehicle, ICrushable
{
  public void Crush()
  {
     Console.WriteLine( "Crrrrrassssh" );
  }
}

public class Gorilla : Animal, ICrushable
{
  public void Crush()
  {
     Console.WriteLine( "Sqqqquuuuish" );
  }
}

建立一个将动物与车辆联系起来的阶级等级是否有任何意义,即使两者都被我的巨型破碎机压碎了?没有.


+1为大猩猩的好例子

3> TheVillageId..:

除了在其他答案中解释的内容之外,interfaces允许您在.NET中模拟多重继承,否则不允许.

有人说,唉

技术由两类人主导:那些理解他们不管理的人,以及管理他们不理解的人.


这是一个非常好的观点.因为.NET不支持多重继承,所以接口的使用几乎是强制性的.

4> Pontus Gagge..:

启用类的单元测试.

要有效地跟踪依赖关系(如果未检出并触摸接口,则只能更改类的语义).

因为没有运行时开销.

启用依赖项注入.

...也许是因为它是'2009年,而不是70年代',而现代语言设计师实际上对他们正在做的事情有一定的线索?

并不是每个类接口都应该抛出接口:只是那些对系统至关重要的接口,并且可能会遇到重大的变化和/或扩展.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有