關於 C# interface的好處

發表日期 : 10/22/2016 12:05:36 PM

Interface 故名思義就是介面,你設計好介面,對外公開,外面所認識的就是這個介面,至於內部怎麼實作,就被包裝起來了,之後實作方法改變,或是增加不同的實作法,外面的使用者都不受影響。
例如電腦並不須知道我們的USB滑鼠是哪一個品牌,只要滑鼠符合USB介面即可。

範例:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;

namespace ConsoleApplication1
{
    interface IUsbMouse
    {
        bool Connect();
        System.Drawing.Point GetPosition();
    }

    public class LogitechMouse : IUsbMouse
    {
        public bool Connect()
        {
            // 實作連接方式
            return true;
        }

        public Point GetPosition()
        {
            // 實作取得滑鼠座標
            return new Point(0, 0);
        }
    }

    public class MicrosoftMouse : IUsbMouse
    {
        public bool Connect()
        {
            // 實作連接方式
            return true;
        }

        public Point GetPosition()
        {
            // 實作取得滑鼠座標
            return new Point(0, 0);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            IUsbMouse MyMouse1 = new LogitechMouse();
            IUsbMouse MyMouse2 = new MicrosoftMouse();

            UseMouse(MyMouse1);
            // 換滑鼠
            UseMouse(MyMouse2);
        }

        // 不用在乎使用哪一牌的滑鼠, 不論滑鼠怎麼變,這個Method都不用改
        static void UseMouse(IUsbMouse mouse)
        {
            if (mouse.Connect())
            {
                Point p1 = mouse.GetPosition();
                Console.WriteLine("X: {0}, Y: {1}", p1.X, p1.Y);
            }
        }
    }
}

分類 : 心得 作者 : 莊英澔

讀者留言


尚未有留言