前言
前一篇淺顯的述說了一下c#接口的作用,並用了一個不怎麼好的例子述說了一下。時隔一天,在看完大家的評論後我在論壇中查看了很多前輩們對c#接口的描述,發現大家對例子的說明不是太容易讓我們這些新人理解。接下來,就用我這個新手的角度再來闡述一遍。哈哈哈哈……
理論改編故事
A公司在經過“百獸齊鳴”的事件後汲取了教訓,老王也開始用接口這個東西來進行項目的管理。為此,他輕松了不少,沾沾自喜中也就沒有去探究接口的其它作用了(沒有影射大家,純屬為了編故事)。
這天,A公司下達了一個新的需求,需要實現由某一個人帶著一種動物出去遛彎。老王看到這個需求,輕哼一聲:我有接口我怕誰,改接口讓小的們去實現相關行為去。
老王在接口中加了一個 void Walk(string people);下達命令,小的們,趕快實現各個動物中的行為,我要遛彎啦!哈哈哈
大家匆匆實現好了各自動物的Walk行為後老王就開始來實現某人帶動物遛彎的功能了。
然後他寫出了這種代碼:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InterfaceProject { /// <summary> /// 人 /// </summary> public class People { /// <summary> /// 姓名 /// </summary> private string name; public string Name { get { return name; } set { name = value; } } #region 帶動物遛彎 public void WalkWithAnimal(Dog dog) { dog.Walk(this.name); } public void WalkWithAnimal(Cat cat) { cat.Walk(this.name); } public void WalkWithAnimal(Pig pig) { pig.Walk(this.name); } #endregion } } View Code
就這樣,安穩過了一段時間。突然有一天,A公司來了一批新動物分發到了各個程序員手中,大家快速的完成了各個動物類。
這時,老王傻眼了。臥槽,這尼瑪有1000多個動物,我得寫1000個遛彎的東西啊!!!!!天啦!
老王現在知道了問題所在,立馬在Zenkey的博客中查找解決方案,終於,他發現了這篇文章(哈哈哈哈)
在尋求了解決方法後,他立馬改了代碼又去得意去了……
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace InterfaceProject { /// <summary> /// 人 /// </summary> public class People { /// <summary> /// 姓名 /// </summary> private string name; public string Name { get { return name; } set { name = value; } } public People(string name) { this.Name = name; } #region 帶動物遛彎 public void WalkWithAnimal(IAnimal animal) { animal.Walk(this.name); } //public void WalkWithAnimal(Dog dog) //{ // dog.Walk(this.name); //} //public void WalkWithAnimal(Cat cat) //{ // cat.Walk(this.name); //} //public void WalkWithAnimal(Pig pig) //{ // pig.Walk(this.name); //} #endregion } } View Code得意之余,帶所有動物輪流遛彎去!!!
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); //老王王帶所有動物都遛一遍 People p = new People("老王"); for (int i = 0; i < animals.Count; i++) { p.WalkWithAnimal(animals[i]); } } } }
總結
不知道大家根據這個故事都理解到了什麼,這篇文章後我也就不再探究接口的作用了,目前在公司中用接口的這些功能已經讓我輕松了不少,希望所有新手都能在我這裡將接口這個神物摸索清楚。
如果有看不明白的請結合上一篇淺談c#接口來看。
如果大家贊同請點贊,如果我述說的有不妥的地方希望大家海涵並指出,我們共同進步。