抽象工廠

抽象工廠

  • 定義html

    • 抽象工廠模式提供一個建立一系列相關或相互依賴對象的接口
    • 無需指它們具體的類
  • 類型建立
  • 適用場景ide

    • 客戶端(應用層)不依賴於產品類實例如何被建立、實現等細節
    • 強調一系列相關的產品對象(屬於同一產品)一塊兒使用建立對象須要大量重複的代碼
    • 提供一個產品類的庫,全部的產品以一樣的接口出現,從而使客戶端不依賴於具體實現。
  • 優勢spa

    • 具體產品在應用層代碼隔離,無需關心建立細節。
    • 將一個系列的產品族統一到一塊兒建立。
  • 缺點code

    • 規定了全部可能被建立的產品集合,產品族中擴展新的產品困難,須要修改抽象工廠的接口。
    • 增長了系統的抽象性和理解難度。

產品等級結構和產品族

clipboard.png

案例

視頻教程=視頻+筆記視頻

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

}
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 PythonArticle extends Article {
    @Override
    public void produce() {
        System.out.println("編寫Python課程手記");
    }
}
public class PythonVideo extends Video {
    @Override
    public void produce() {
        System.out.println("錄製Python課程視頻");
    }
}
public interface CourseFactory {
    Video getVideo();
    Article getArticle();

}
public class JavaCourseFactory implements CourseFactory {
    @Override
    public Video getVideo() {
        return new JavaVideo();
    }

    @Override
    public Article getArticle() {
        return new JavaArticle();
    }
}
public class PythonCourseFactory implements CourseFactory {
    @Override
    public Video getVideo() {
        return new PythonVideo();
    }

    @Override
    public Article getArticle() {
        return new PythonArticle();
    }
}
public class Test {
    public static void main(String[] args) {
        CourseFactory courseFactory = new JavaCourseFactory();
        Video video = courseFactory.getVideo();
        Article article = courseFactory.getArticle();
        video.produce();
        article.produce();
    }
}

clipboard.png

區別

  • 簡單工廠 : 用來生產同一等級結構中的任意產品。(不支持拓展增長產品)
  • 工廠方法 :用來生產同一等級結構中的固定產品。(支持拓展增長產品)
  • 抽象工廠 :用來生產不一樣產品族的所有產品。(不支持拓展增長產品;支持增長產品族)

參考資料:https://www.cnblogs.com/qiaoc...htm

相關文章
相關標籤/搜索