为什么我们使用接口
接口是接口用户与实现接口的用户之间的契约定义。考虑接口的一种方法是声明对象可以执行某些功能。
假设我们定义了一个接口 IShape
来表示不同类型的形状,我们期望一个形状有一个区域,所以我们将定义一个方法来强制接口实现返回它们的区域:
public interface IShape
{
double ComputeArea();
}
我们有以下两种形状:Rectangle
和 Circle
public class Rectangle : IShape
{
private double length;
private double width;
public Rectangle(double length, double width)
{
this.length = length;
this.width = width;
}
public double ComputeArea()
{
return length * width;
}
}
public class Circle : IShape
{
private double radius;
public Circle(double radius)
{
this.radius = radius;
}
public double ComputeArea()
{
return Math.Pow(radius, 2.0) * Math.PI;
}
}
他们每个人都有自己的区域定义,但两者都是形状。因此,在我们的计划中将它们视为 IShape
是合乎逻辑的:
private static void Main(string[] args)
{
var shapes = new List<IShape>() { new Rectangle(5, 10), new Circle(5) };
ComputeArea(shapes);
Console.ReadKey();
}
private static void ComputeArea(IEnumerable<IShape> shapes)
{
foreach (shape in shapes)
{
Console.WriteLine("Area: {0:N}, shape.ComputeArea());
}
}
// Output:
// Area : 50.00
// Area : 78.54