工廠方法

工廠方法

  • 定義:定義一個建立對象的接口,但讓實現這個接口的類決定實例化哪一個類,工廠方法讓類的實例化推遲到子類中進行。
  • 類型建立型
  • 適用場景前端

    • 建立對象須要大量重複的代碼
    • 客戶端(應用層)不依賴於產品類實例如何被建立、實現等細節。
    • 一個類經過其子類來指定建立哪一個對象。
  • 優勢ide

    • 用戶只須要關心所需產品對應的工廠,無需關心建立的細節。
    • 加入新產品符合開閉原則,提升可擴展性。
  • 缺點spa

    • 類的個數容易過多,增長複雜度。
    • 增長了系統的抽象性和理解難度。

案例

public abstract class Video {
    public abstract void produce();

}
public class JavaVideo extends Video {
    @Override
    public void produce() {
        System.out.println("錄製Java課程視頻");
    }
}
public class PythonVideo extends Video {
    @Override
    public void produce() {
        System.out.println("錄製Python課程視頻");
    }
}
public abstract class VideoFactory {

    public abstract Video getVideo();
}
public class JavaVideoFactory extends VideoFactory {
    @Override
    public Video getVideo() {
        return new JavaVideo();
    }
}
public class PythonVideoFactory extends VideoFactory {
    @Override
    public Video getVideo() {
        return new PythonVideo();
    }
}
public class Test {
    public static void main(String[] args) {
        VideoFactory videoFactory = new PythonVideoFactory();
        Video video = videoFactory.getVideo();
        video.produce();
    }
}

可擴展性:
增長一個前端視頻:code

public class FEVideo extends Video{
    @Override
    public void produce() {
        System.out.println("錄製FE課程視頻");
    }
}
public class FEVideoFactory extends VideoFactory{
    @Override
    public Video getVideo() {
        return new FEVideo();
    }
}

clipboard.png

重點:videoFactory把建立具體某個視頻的職責交由子類來實現。這裏Video是產品,FEVideo、PythonVideo、JavaVideo是實際的產品,VideoFactory是建立者,而FEVideoFactory、PythonVideoFactory、JavaVideoFactory是實際的建立者視頻

相關文章
相關標籤/搜索