真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

依賴倒置原則(二)-創(chuàng)新互聯(lián)

依賴倒置原則就是抽象類和接口在使用時(shí)的一些規(guī)范和建議,我們的應(yīng)用上層模塊不直接依賴于下層模塊,不具體依賴某個(gè)類或者對(duì)象,而是依賴于某個(gè)抽象。

為南通等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及南通網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、南通網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

接著上一節(jié)的Demo,我們有3個(gè)手機(jī)的對(duì)象。分別是LumiaPhone,Galaxy,ApplePhone,現(xiàn)在我們新增一個(gè)Student學(xué)生類,學(xué)生會(huì)使用手機(jī)。有可能使用LumiaPhone手機(jī),也有可能使用Galaxy,也有可能使用

ApplePhone,那我們的Student看起來(lái)的得實(shí)現(xiàn)成這樣:

       public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public void PlayPhone(LumiaPhone lumiaPhone)
        {
            Console.WriteLine($"{Name} use {lumiaPhone.Name}");
        }
        public void PlayApplePhone(ApplePhone applePhone)
        {
            Console.WriteLine($"{Name} use {applePhone.Name}");
        }
        public void PlayGalaxy(Galaxy galaxy)
        {
            Console.WriteLine($"{Name} use {galaxy.Name}");
        }
    }

具體使用時(shí),我們可能會(huì)是這樣: 先創(chuàng)建一個(gè)Student再根據(jù)學(xué)生使用的某種手機(jī) 調(diào)用不同的play方法

 LumiaPhone lumiaPhone = new LumiaPhone();
ApplePhone applePhone = new ApplePhone();
Galaxy galaxy = new Galaxy();
Student student = new Student();
student.PlayPhone(lumiaPhone);
student.PlayApplePhone(applePhone);
student.PlayGalaxy(galaxy);

這個(gè)時(shí)候假設(shè)Student舊的手機(jī)壞了,換了新的華為手機(jī),那我們新增一個(gè)Honor對(duì)象

 public class Honor
    {
       public void System()
        {
            Console.WriteLine("Hua Wei Honor");
        }
    }

再修改Student類 新增一個(gè)方法

 
        public void PlayHonor(Honor honor)
        {
            Console.WriteLine($"{Name} use {honor.Name}");
        }

使用時(shí)

 Honor honor = new Honor();
student.PlayHonor(honor);

手機(jī)有太多種類,每次新增對(duì)象我們都要在Student中新增方法 在調(diào)用處進(jìn)行手機(jī)的實(shí)例化,維護(hù)起來(lái) 非常麻煩,容易出錯(cuò)。不利于擴(kuò)展,所以我們的Student 不應(yīng)該依賴于具體的類,而是應(yīng)該依賴抽象 上一遍提到的BasePhone,我們來(lái)改造下代碼 Student會(huì)變成這樣

 
 public class Student
    {
        public int Id { get; set; }
        public string Name { get; set; }

        public void PlayPhone(BasePhone basePhone)
        {
            Console.WriteLine($"{Name} use {basePhone.Name}");
        }
        //public void PlayPhone(LumiaPhone lumiaPhone)
        //{
        //    Console.WriteLine($"{Name} use {lumiaPhone.Name}");
        //}

        //public void PlayApplePhone(ApplePhone applePhone)
        //{
        //    Console.WriteLine($"{Name} use {applePhone.Name}");
        //}

        //public void PlayGalaxy(Galaxy galaxy)
        //{
        //    Console.WriteLine($"{Name} use {galaxy.Name}");
        //}

        //public void PlayHonor(Honor honor)
        //{
        //    Console.WriteLine($"{Name} use {honor.Name}");
        //}
    }

我們的調(diào)用處

    static void Main(string[] args)

    {

      {

        LumiaPhone lumiaPhone = new LumiaPhone();

        ApplePhone applePhone = new ApplePhone();

        Galaxy galaxy = new Galaxy();

        Honor honor = new Honor();

        Student student = new Student();

        student.PlayPhone(lumiaPhone);

        student.PlayPhone(applePhone);

        student.PlayPhone(galaxy);

        student.PlayPhone(honor);

        //student.PlayPhone(lumiaPhone);

        //student.PlayApplePhone(applePhone);

        //student.PlayGalaxy(galaxy);

        //student.PlayHonor(honor);

      }

      Console.ReadKey();

    }

這個(gè)時(shí)候感覺(jué)Main還是依賴了具體的對(duì)象Student,以學(xué)生使用honor手機(jī)為例

                BasePhone honor = new Honor();
                Student student = new Student();
                student.PlayPhone(honor);

我們新增一個(gè)SimpleFactory及接口IPlayPhone

    public static class SimpleFactory
    {
        public static BasePhone CreatePhone()
        {
            return new Honor();
        }
        public static Student CreateStudent()
                {
                    return  new Student();
                }
    }

    public interface IPlayPhone
    {
        void PlayPhone(BasePhone basePhone);
    }

那我們的Main方法則變成

 static void Main(string[] args)
        {
            {
                BasePhone honor = SimpleFactory.CreatePhone();
                IPlayPhone student = SimpleFactory.CreateStudent();
                student.PlayPhone(honor);
                //Honor honor = new Honor();
                //Student student = new Student();
                //student.PlayPhone(honor);
                //student.PlayPhone(lumiaPhone);
                //student.PlayApplePhone(applePhone);
                //student.PlayGalaxy(galaxy);
                //student.PlayHonor(honor);
            }
            Console.ReadKey();
        }

我在這個(gè)demo SimpleFactory里直接返回了一個(gè)對(duì)象,項(xiàng)目中是可以通過(guò)讀取配置文件反射來(lái)構(gòu)造實(shí)的
這樣只要通過(guò)改配置文件 就可以實(shí)現(xiàn)學(xué)生更換手機(jī)的功能,同樣通過(guò)配置文件 也可以實(shí)現(xiàn) 老師使用手機(jī)只要我們新增一個(gè)Teacher類 實(shí)現(xiàn)IPlayPhone接口。其他代碼不需要任何改動(dòng), 這就是我們?cè)瓌t 依賴抽象或接口 而不應(yīng)該依賴于具體的細(xì)節(jié)的好處, 這里學(xué)生,老師其實(shí)就是上層,而我們的手機(jī)則是下層,上層不應(yīng)該依賴下層 而是應(yīng)該依賴抽象

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


本文名稱:依賴倒置原則(二)-創(chuàng)新互聯(lián)
標(biāo)題來(lái)源:http://weahome.cn/article/ppecp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部