1. 程式人生 > >簡單工廠模式與工廠方法模式

簡單工廠模式與工廠方法模式

interface ace nal tor sim str bre sys 對象比較

  • 簡單工廠
    • 定義:簡單工廠模式屬於創建型模式,其又被稱為靜態工廠方法模式,這是由一個工廠對象決定創建出哪一種產品類的實例
    • 技術分享圖片
    • 工廠類
      public class CamputerFactory {
      
          public static Computer createComputer1(String type) {
              Computer computer = null;
              switch (type){
                  case "Lenovo":
                      computer = new LenovoComputer();
                      break;
                  case "HP":
                      computer = new HPComputer();
                      break;
                      default:break;
              }
              return computer;
          }
      }
      
    • 客戶端調用:
         @Test
          public void testSimpleFactory(){
              CamputerFactory.createComputer1("Lenovo").start();
          }
      
    • 抽象產品:
      public interface Computer {
          void start();
      }
      
    • 具體產品:
      public class HPComputer implements Computer {
      
          private static final String  TAG = "HPComputer";
      
          @Override
          public void start() {
              System.out.print(TAG+" work===========");
          }
      }
      
    • 使用場景:

      • 工廠類負責創建的對象比較少

      • 客戶只需要知道傳入工廠類的參數,而無需關心創建對象的邏輯。

      • 優點:使用戶根據參數獲得對應的類實例,避免了直接實例化類,降低了耦合性

      • 缺點:可實例化的類型在編譯期間已經被確定。如果增加新類型,則需要修改工廠,這違背了開放封閉原則。簡單工廠需要知道所有生成的類型 ,當其子類過多或者子類層次過多時不宜使用

  • 工廠方法
    • 定義:定義了一個用於創建對象的接口,讓子類決定實例化哪個類。工廠方法使一個類的實例化延遲到其子類。工廠方法使一個類的實例化延遲到子類
    • 有如下角色:
      • 抽象工廠類
      • 具體工廠類
      • 抽象產品類
      • 具體產品類

技術分享圖片

簡單工廠模式與工廠方法模式