為什麼我們使用介面
介面是介面使用者與實現介面的使用者之間的契約定義。考慮介面的一種方法是宣告物件可以執行某些功能。
假設我們定義了一個介面 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