設計模式2-工廠模式

工廠模式

適用場景

  1. 創建對象需要大量重複的代碼
  2. 應用層不依賴於產品類實例如何被創建實現等細節
  3. 一個類通過其子類來指定創建哪個對象

優點

  1. 用戶只需要關係所需產品對應的工廠,無需關係創建細節
  2. 加入新產品符合開閉原則,可提高拓展性

缺點

  1. 類的個數容易過多,增加複雜度
  2. 增加了系統的抽象性和理解難度

代碼

  1. 創建一個基礎類
public abstract class AbstractVideo {

    /**
     * 一個行爲方法
     */
    public abstract void produce();

}
  1. 創建兩個具體類 繼承基礎類

public class JavaVideo  extends AbstractVideo {

    @Override
    public void produce() {
        System.out.println("錄製Java視頻");
    }
}
public class PythonVideo extends AbstractVideo {

    @Override
    public void produce() {
        System.out.println("錄製Python視頻");
    }
}
  1. 創建一個工廠類基礎類
public abstract class VideoFactory {

    public abstract AbstractVideo getVideo();

}
  1. 創建兩個具體工廠類 繼承基礎類
public class JavaVideoFactory extends VideoFactory {
    @Override
    public AbstractVideo getVideo() {
        return new JavaVideo();
    }
}
public class PythonVideoFactory extends VideoFactory  {
    @Override
    public AbstractVideo getVideo() {
        return new PythonVideo();
    }
}
  1. 測試
/**
 * 工廠方法
 * @author wang
 */
public class FactoryMethod {
    public static void main(String[] args) {
        //通過創建對應的工廠創建具體類
        VideoFactory videoFactory1 = new JavaVideoFactory();
        VideoFactory videoFactory2 = new PythonVideoFactory();
        AbstractVideo video1 = videoFactory1.getVideo();
        AbstractVideo video2 = videoFactory2.getVideo();
        video1.produce();
        video2.produce();
    }
}

總結

工廠方法通過創建各個具體類的工廠方法簡化多次創建類的代碼,再次調用時直接通過簡單地創建工廠方法即可直接獲得想要的方法。

發佈了30 篇原創文章 · 獲贊 13 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章