c#接口深入一步探究其作用,適合新人了解


前言

  前一篇淺顯的述說了一下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#接口來看。

  如果大家贊同請點贊,如果我述說的有不妥的地方希望大家海涵並指出,我們共同進步。

  

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM