抽象工廠
定義:抽象工廠模式提供一個創建一系列相關或相互依賴對象的接口
無須指定他們具體的類
類型:創建型
使用場景:
客戶端(應用層)不依賴於產品類實例如何被創建、實現等細節
強調一系列相關的產品對象(屬於同一產品族)一起使用創建對象需要大量重複的代碼
提供一個產品類的庫,所有產品以同樣的接口出現,從而使客戶端不依賴於具體實現
優點:
具體產品在應用層代碼隔離,無需關心創建細節
將一個系列的產品族統一到一起創建
缺點:
規定了所有可能被創建的產品集合,產品族中擴展新的產品困難,需要修改抽象抽象工廠中的接口
增加了系統的抽象性和理解難度
public abstract class Article {
public abstract void produce();
}
public abstract class Video {
public abstract void produce();
}
public interface CourseFactory {
Video getVideo();
Article getArticle();
}
public class JavaArticle extends Article{
@Override
public void produce() {
System.out.println("編寫java手記");
}
}
public class JavaVideo extends Video {
@Override
public void produce() {
System.out.println("錄製java課程視頻");
}
}
public class JavaCoursrFactory implements CourseFactory {
@Override
public Video getVideo() {
return new JavaVideo();
}
@Override
public Article getArticle() {
return new JavaArticle();
}
}
public class Test {
public static void main(String[] args) {
CourseFactory courseFactory = new JavaCoursrFactory();
Video video = courseFactory.getVideo();
Article article = courseFactory.getArticle();
video.produce();
article.produce();
}
}