摘要:抽象工廠模式抽象工廠是工廠模式的升級版,他用來創(chuàng)建一組相關(guān)或者相互依賴的對象。代碼抽象工廠模式抽象工廠的優(yōu)點(diǎn)抽象工廠模式除了具有工廠方法模式的優(yōu)點(diǎn)外,最主要的優(yōu)點(diǎn)就是可以在類的內(nèi)部對產(chǎn)品族進(jìn)行約束。
抽象工廠模式
抽象工廠是工廠模式的升級版,他用來創(chuàng)建一組相關(guān)或者相互依賴的對象。上節(jié)學(xué)習(xí)了工廠模式,類的創(chuàng)建依賴工廠類,程序需要擴(kuò)展時(shí),我們必須創(chuàng)建新的工廠類。工廠類是用來生產(chǎn)產(chǎn)品的,那我們也可以把“工廠類當(dāng)成我們要生產(chǎn)的產(chǎn)品”,所以抽象工廠就是“工廠的工廠”,即生產(chǎn)工廠的工廠。下面通過一個(gè)例子來深入理解。
代碼//抽象工廠模式 var DP = require("./DesignPattern.js"); function CPUFactory() { DP.Interface(this, ["createCPU"]); } function IntelCPU() { this.__proto__ = new CPUFactory(); this.createCPU = function () { console.log("Intel CPU"); }; } function AMDCPU() { this.__proto__ = new CPUFactory(); this.createCPU = function () { console.log("AMD CPU"); }; } function Provider() { DP.Interface(this, ["createCPUFactory"]); } function InterCPUFactory() { this.__proto__ = new Provider(); this.createCPUFactory = function () { return new IntelCPU(); }; } function AMDCPUFactory() { this.__proto__ = new Provider(); this.createCPUFactory = function () { return new AMDCPU(); }; } var cpufactory = new InterCPUFactory(); var IntelCpu = cpufactory.createCPUFactory(); IntelCpu.createCPU(); cpufactory = new AMDCPUFactory(); var AmdCpu = cpufactory.createCPUFactory(); AmdCpu.createCPU();抽象工廠的優(yōu)點(diǎn)
抽象工廠模式除了具有工廠方法模式的優(yōu)點(diǎn)外,最主要的優(yōu)點(diǎn)就是可以在類的內(nèi)部對產(chǎn)品族進(jìn)行約束。所謂的產(chǎn)品族,一般或多或少的都存在一定的關(guān)聯(lián)(例如不同廠商生產(chǎn)CPU)。
適用場景一個(gè)繼承體系中,如果存在著多個(gè)等級結(jié)構(gòu)(即存在著多個(gè)抽象類),并且分屬各個(gè)等級結(jié)構(gòu)中的實(shí)現(xiàn)類之間存在著一定的關(guān)聯(lián)或者約束,就可以使用抽象工廠模式。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/79470.html
摘要:原文地址設(shè)計(jì)模式八工廠模式在設(shè)計(jì)模式七設(shè)計(jì)模式分類中我們提到過創(chuàng)建設(shè)計(jì)模式,創(chuàng)建設(shè)計(jì)模式專注于設(shè)計(jì)對象和實(shí)例的創(chuàng)建過程。工廠模式工廠模式,也是五種設(shè)計(jì)模式中唯一的類的設(shè)計(jì)模式,即在類中就能實(shí)現(xiàn)的設(shè)計(jì)模式。 原文地址:PHP設(shè)計(jì)模式(八):工廠模式 Introduction 在PHP設(shè)計(jì)模式(七):設(shè)計(jì)模式分類中我們提到過創(chuàng)建設(shè)計(jì)模式(Creation patterns),創(chuàng)建設(shè)計(jì)模式專...
摘要:抽象工廠模式可以向客戶端提供一個(gè)接口,使客戶端在不必指定產(chǎn)品的具體的情況下,創(chuàng)建多個(gè)產(chǎn)品族中的產(chǎn)品對象。前邊的兩個(gè)都是直接生產(chǎn)實(shí)例的,開始以為抽象工廠也是但是后來發(fā)現(xiàn)抽象工廠更像是生產(chǎn)工廠,其實(shí)抽象工廠其實(shí)是實(shí)現(xiàn)子類繼承父類的方法。 創(chuàng)建型模式 創(chuàng)建型模式是對一個(gè)類的實(shí)例化過程進(jìn)行了抽象,把對象的創(chuàng)建和對象的使用進(jìn)行了分離 上一篇介紹了下單例模式,這一篇介紹一下工廠模式和抽象工廠模式,...
摘要:簡介抽象工廠模式就是通過類的抽象使得業(yè)務(wù)適用于一個(gè)產(chǎn)品類簇的創(chuàng)建,而不負(fù)責(zé)某一類產(chǎn)品的實(shí)例。通過抽象工廠,就可以創(chuàng)建某個(gè)類簇的產(chǎn)品,并且也可以通過來檢查產(chǎn)品的類別,也具備該類簇所必備的方法。 0. 簡介 抽象工廠模式(Abstract Factory)就是通過類的抽象使得業(yè)務(wù)適用于一個(gè)產(chǎn)品類簇的創(chuàng)建,而不負(fù)責(zé)某一類產(chǎn)品的實(shí)例。 JS中是沒有直接的抽象類的,abstract是個(gè)保留字,但...
摘要:參考文章深入理解三種工廠模式工廠模式,工廠方法模式,抽象工廠模式詳解工廠模式是中最常用的設(shè)計(jì)模式之一。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式。 參考文章:深入理解java三種工廠模式工廠模式,工廠方法模式,抽象工廠模式 詳解 工廠模式(Factory Pattern)是 Java 中最常用的設(shè)計(jì)模式之一。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的...
閱讀 2501·2021-11-15 18:14
閱讀 1725·2021-10-14 09:42
閱讀 3766·2021-10-11 10:58
閱讀 3964·2021-10-09 09:44
閱讀 2426·2021-09-26 09:55
閱讀 2450·2021-09-24 10:38
閱讀 2040·2021-09-04 16:48
閱讀 3279·2021-09-02 15:21