我已经了解了实现和接口的基础知识。我不明白什么时候使用接口。拥有一个接口需要什么条件?
例子:
/// Interface demo
Interface IDemo
{
// Function prototype
public void Show();
}
// First class using the interface
Class MyClass1 : IDemo
{
public void Show()
{
// Function body comes here
Response.Write("I'm in MyClass");
}
}
// Second class using the interface
Class MyClass2 : IDemo
{
public void Show()
{
// Function body comes here
Response.Write("I'm in MyClass2");
Response.Write("So, what?");
}
}
Run Code Online (Sandbox Code Playgroud)
这两个类具有相同的函数名称和不同的主体。这也可以在没有接口的情况下实现。提供方法参考的目的是什么?当我扩展超类时,至少我获得了超类的属性和方法。
请给我一个清晰的解释和一个现实世界的场景,以便我更好地理解。
首先,他们为用户提供合约,因此用户不需要知道使用了什么底层实现,而只需要知道合约。这会在底层实现发生变化时产生松散耦合。
通过这种方式,我们可以使用某些模式,例如策略和命令模式:使用策略模式和命令模式
其中大部分内容都可以关于抽象类,请参阅此处了解差异:Interface vs Abstract Class (general OO)