設計模式之抽象工廠方法

抽象工廠

定義:抽象工廠模式提供一個創建一系列相關或相互依賴對象的接口
無須指定他們具體的類
類型:創建型

使用場景:
客戶端(應用層)不依賴於產品類實例如何被創建、實現等細節
強調一系列相關的產品對象(屬於同一產品族)一起使用創建對象需要大量重複的代碼
提供一個產品類的庫,所有產品以同樣的接口出現,從而使客戶端不依賴於具體實現

優點:
具體產品在應用層代碼隔離,無需關心創建細節
將一個系列的產品族統一到一起創建
缺點:
規定了所有可能被創建的產品集合,產品族中擴展新的產品困難,需要修改抽象抽象工廠中的接口
增加了系統的抽象性和理解難度

UML圖

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();
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章