工廠方法
定義:
定義一個創建對象的接口,但讓實現這個接口的類來決定實例化哪個類,工廠方法讓類的實例化推遲到子類中進行
工廠:創建對象用的
方法:通過子類實現方法創建對象
類型:
創建型
·創建對象需要大量的重複代碼
·客戶端(應用層)不依賴於產品類實例如何被創建、實現等細節
·一個類通過其子類來指定創建那個對象
使用場景:
·創建對象需要大量代碼
·客戶端(應用層)不依賴於產品類實例如何被創建、實現等細節
優點:
用戶只需要關心所需產品對應的工廠,無需關心創建細節
加入新產品符合開閉原則,提高可擴展性
缺點:
類的個數容易過多,增加複雜度
增加了系統的抽象性和理解難度
public class javaVideo extends Video {
@Override
public void produce() {
System.out.println("錄製java課程視頻");
}
}
public abstract class Video {
public abstract void produce();
}
public abstract class VideoFactory {
//只定義規範,契約,具體那種視頻有VideoFactory的子類來決定並且實現
public abstract Video getVideo();
}
public class Test {
public static void main(String[] args) {
VideoFactory videoFactory = new FEVideoFactory();
Video video = videoFactory.getVideo();
video.produce();
}
}