這段時間的項目有用到介面,開始不是特別理解介面,只是單單知道介面定義非常簡單,甚至覺得這個介面只是多此一舉(個人開發的時候)。現在開始團隊開發,才發現介面原來是這麼的重要和便捷! 接下來就來談談我這段時間對介面使用的粗淺見解,說的對希望大家贊,說的有誤的地方希望大家多多包涵建議! READY GO! ...
這段時間的項目有用到介面,開始不是特別理解介面,只是單單知道介面定義非常簡單,甚至覺得這個介面只是多此一舉(個人開發的時候)。現在開始團隊開發,才發現介面原來是這麼的重要和便捷!
接下來就來談談我這段時間對介面使用的粗淺見解,說的對希望大家贊,說的有誤的地方希望大家多多包涵建議!
READY GO!
介面的定義就不多說了,它有一個很重要的知識點,就是所有繼承這個介面類的都必須實現介面中的定義,說到這個必須,在團隊開發中,只要我們商定好了介面,那我們的代碼是不是就統一了!!!
這是我覺得介面重要的第一點:它便於我們統一項目的規定,便於團隊代碼的管理!
再來用一個例子說明:
A公司決定開發一套動物系統,其中包含很多的動物,公司決定要實現每個動物的喊叫行為……
說到這裡,我們一般就是各個程式員拿到自己要實現的動物類之後就開始大刀闊斧的開幹了!!!
X程式員實現狗這個類,他寫一個叫喊方法void Han(){……}
Y程式員實現貓這個類,他寫一個叫喊方法void Shout(){……}
M程式員實現豬這個類,他寫一個叫喊方法 void Shout(string content){……}
………………
好了,現在都完成了各自需要完成的動物,隔壁老王開始來實現百獸齊鳴!!!!&¥%¥*%¥¥%¥一頓粗口爆出!這要怎麼寫?一個個去調用???
來看看,X程式員英語不太好,也沒有過多的去管,只是寫出動物叫喊的方法,Y程式員和M程式員寫的叫喊方法名稱是一樣,但M程式員中還要傳遞動物叫喊的內容!!!!!
隔壁老王現在要讓所有動物都叫一遍就得一個動物一個動物的去調用方法……
OK,接下來開會商量,隔壁老王定義一個動物介面,所有的動物類都得繼承這個介面,這個介面只定義一個void Shout(); (就不過多的寫東西啦,偷偷懶)
X,Y,M程式員繼承後,X,M立馬就發現有問題,然後開始改了自己手中的類
這時老王就開始來百獸齊鳴啦!哈哈哈哈哈
接下來貼出代碼大家看
介面
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InterfaceProject { /// <summary> /// 動物介面 /// </summary> interface IAnimal { /// <summary> /// 動物叫喊 /// </summary> void Shout(); } }
狗
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InterfaceProject { /// <summary> /// 狗 /// </summary> public class Dog:IAnimal { public void Shout() { Console.WriteLine("汪汪汪"); } } }
貓
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InterfaceProject { /// <summary> /// 貓 /// </summary> public class Cat:IAnimal { public void Shout() { Console.WriteLine("喵喵喵"); } } }
豬
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InterfaceProject { /// <summary> /// 豬 /// </summary> public class Pig:IAnimal { public void Shout() { Console.WriteLine("豬怎麼叫來著??豬叫"); } } }
隔壁老王來實現百獸齊鳴(打倒老王這種人物的存在)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InterfaceProject { class Program { static void Main(string[] args) { //百獸齊鳴(這裡可以使用反射來初始化所有繼承IAnimal的所有動物,我就不寫這個了,主要看介面) List<IAnimal> animals = new List<IAnimal>(); IAnimal dog = new Dog(); animals.Add(dog); IAnimal cat = new Cat(); animals.Add(cat); IAnimal pig = new Pig(); animals.Add(pig); //所有動物都叫一遍 for (int i = 0; i < animals.Count; i++) { animals[i].Shout(); } } } }
我對這個介面的粗略見解就說完啦!介面這個東西雖然用起來很簡單,但我們還是要理解這個介面的作用,希望我的這篇文章能夠讓更多像我一樣的新手向介面這個東西邁出第一步
以上動圖由“圖鬥羅”提供(百度一下)