接口的用途

很多剛剛接觸C#時都會很難理解接口這種類型是作什麼用途,我個人認爲,理解接口是理解Frnamework框架的一個重要前提。言歸正傳,接口究竟可以做些什麼?先看看以下代碼:

using System;

namespace Test
{
    interface IShowMessage
    {
        void Show(string strMesg);
    }

    class Demo : IShowMessage
    {
        public void Show(string strMesg)
        {
            Console.WriteLine("You show the message : {0}", strMesg);
        }
    }

    class DemoFactory
    {
        public static Demo CreateDemo()
        {
            return new Demo();
        }
    }

    class Program
    {
        public static void Main()
        {
            IShowMessage sm = DemoFactory.CreateDemo();
            sm.Show("I am successful!");
        }
    }
   
}

以上的例子定義了一個IShowMessage接口,實現此接口的類都能在後臺輸出信息,Demo類就是實現IShowMessage接口的一個類,所以Demo就具有向後臺輸出一條信息的能力了。大家有沒有注意到我在Main()中並不是直接用Demo類創建實例,而是通過DemoFactory類中的一個靜態方法CreateDemo()創建,這樣做有什麼好處?這是爲了應付一些需求變化,有些需求變化會導致Demo類變得一無是處,我需要重新創建另一個類,並同時實現IShowMessage接口,這時我需要向後臺輸出兩條信息,或者我要將信息寫入到一個文本文件中,這時只需要在DemoFactory中將 “return new Demo” 改成 “return new NewDemo” ,這樣,在應用程序中凡是 "IShowMessage sm = DemoFactory.CreateDemo" 中的sm接口對象就會應用了NewDemo中的Show方法。

         或許你會覺得可以直接在原來的Demo類中改,對!你完全可以這樣做。此時我們又帶大家去到另一個場景。大部份應用程序都是直接與數據庫打交道,你可以定義一個訪問數據庫的接口(比如:IData),例如新增、刪除、修改、查詢等操作,建立一個數據庫操作類(比如叫做DataAccess,專門對Access數據庫進行操作)來實現此接口,其他的類都是通過此DataAccess類對數據庫進行新增、刪除、修改、查詢等操作。如果以後有客戶需要用SqlServer作爲數據庫,這時只要創建一個實現IData接口的類,並在工廠方法中將舊類的地方修改成新類,這樣應用程序的數據訪問就變成對SqlServer進行操作。

       以上是我對接口的一些理解,最重要的是多思考,舉一反三。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章