乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      【設計模式】工廠方法模式

       小樣樣樣樣樣樣 2021-07-19

      定義


      定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類

      優(yōu)缺點


      • 優(yōu)點

      針對簡單工廠不容易擴展,工廠方法將實例化延遲到子類工廠,從而提供擴展

      • 缺點

      每次新增產(chǎn)品都需要添加工廠和具體產(chǎn)品類,增加系統(tǒng)復雜性

      角色


      • 客戶端 --> 抽象工廠,具體工廠, 抽象產(chǎn)品
      • 抽象產(chǎn)品 --> 具體產(chǎn)品
      • 具體產(chǎn)品
      • 抽象工廠 --> 抽象產(chǎn)品
      • 具體工廠 --> 抽象產(chǎn)品,具體產(chǎn)品

      代碼


      • 抽象產(chǎn)品
      public abstract class Phone
      {
          public abstract void Call();
      }
      
      • 具體產(chǎn)品
      public class IPhone : Phone
      {
          public override void Call()
          {
              System.Console.WriteLine("Call by IPhone");
          }
      }
      
      public class AndroidPhone : Phone
      {
          public override void Call()
          {
              System.Console.WriteLine("Call by Android");
          }
      }
      
      • 抽象工廠
      public abstract class PhoneFactory
      {
          public abstract Phone Create();
      }
      
      • 具體工廠
      public class IPhoneFactory : PhoneFactory
      {
          public override Phone Create()
          {
              return new IPhone();
          }
      }
      
      public class AndroidFactory : PhoneFactory
      {
          public override Phone Create()
          {
              return new AndroidPhone();
          }
      }
      
      • 客戶端
      Phone phone = new IPhoneFactory().Create();
      phone.Call();
      
      phone = new AndroidFactory().Create();
      phone.Call();
      

      簡單工廠 VS 工廠方法

      假設現(xiàn)在需要擴展手機產(chǎn)品,增加鴻蒙OS手機

      • 簡單工廠
      1. 增加具體手機類 HarmonyPhone
      2. 修改靜態(tài)工廠方法增加HarmonyPhone判斷(違反開閉原則)
      • 工廠方法
      1. 增加具體手機類 HarmonyPhone
      2. 增加具體工廠類 HarmonyFactory

      總結(jié)

      工廠方法模式是典型的解耦框架,通過增加抽象工廠,客戶端與具體產(chǎn)品解耦,抽象工廠與具體產(chǎn)品解構(gòu)

      符合迪米特法則,不需要知道具體產(chǎn)品如何構(gòu)造

      符合依賴倒置原則,只依賴產(chǎn)品類的抽象

      符合里氏替換原則,父類出現(xiàn)的地方都可以用子類替換,因為沒有破壞繼承體系

      當然最重要復合開閉原則,當需要擴展產(chǎn)品時,并不需要改動原來代碼,只需增加新的具體產(chǎn)品類,具體工廠類


      示例代碼 - Github

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多