应用程序设计 - 什么时候应该使用接口?

Jam*_* P. 1 language-agnostic uml analysis interface application-design

我有点理解一个接口是一个契约,可以应用于本来没有任何共同点的类(例如:Java中的Comparable).但是,在什么情况下你会在设计阶段有反射添加界面?

Mit*_*eat 5

"我有点理解一个接口是一个合同,可以应用于本来没有任何共同点的类" - 这可能不是思考接口是什么的方式.

接口描述行为,实现接口意味着类进入合同以提供该行为.

通过编程到接口而不是实现,您可以启用多态并获得具有更低耦合的更灵活的代码.例如,此方法可以采用任何实现的实例IQuack:

public void DoSomething(IQuack quacker)
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)


Ara*_*ion 5

每当您使用静态类型语言时,您希望开发人员可以在提供替代实现的同时使用您的代码 - 换句话说,在这种语言中,必须实现低(呃)耦合.

使用ducktyping作为规则的语言,而不是严格的类型检查,例如python,通常不需要接口.