摘要:工廠模式是最常用的實(shí)例化對象模式,是用工廠方法代替操作的一種模式原文鏈接簡單工廠模式優(yōu)點(diǎn)能解決多個(gè)相似的問題缺點(diǎn)不能識別對象的類型工廠模式是為了解決多個(gè)類似對象聲明問題,也就是重復(fù)實(shí)例化對象的問題復(fù)雜工廠模式將其成員對象的實(shí)例化推遲到子類中
工廠模式是最常用的實(shí)例化對象模式,是用工廠方法代替new操作的一種模式
原文鏈接
簡單工廠模式優(yōu)點(diǎn):能解決多個(gè)相似的問題
缺點(diǎn):不能識別對象的類型
function Factory(name,age,sex){ let person = {}; person.name = name; person.age = age; person.sex = sex; person.say = function(){ return this.name; }; return person; } let tom = new Factory("Tom","10","male"); let jerry = new Factory("Jerry","20","female");
工廠模式是為了解決多個(gè)類似對象聲明問題,也就是重復(fù)實(shí)例化對象的問題
復(fù)雜工廠模式將其成員對象的實(shí)例化推遲到子類中,子類可以重寫父類接口方法以便創(chuàng)建時(shí)指定獨(dú)自的對象類型
父類只對創(chuàng)建過程中的一般性問題進(jìn)行處理,子類繼承,但子類之間相互獨(dú)立,具體業(yè)務(wù)再各自實(shí)現(xiàn)
父類變?yōu)槌橄箢悾荒鼙粚?shí)例
//工廠構(gòu)造函數(shù) function Factory(name){ this.name = name; this.say = function(){ return this.name; } } Factory.prototype = { constructor: Factory, createFactory: function(){ throw new Error("父類抽象類無法直接調(diào)用,需要子類重寫"); } } //原型繼承 function extend(sub,sup){ //定義空函數(shù) let F= function(){}; //空函數(shù)原型為父類原型 F.prototype = sup.prototype; //實(shí)例化空函數(shù)傳遞給子類原型 sub.prototype = new F(); //使子類構(gòu)造器指向自身 sub.prototype.constructor = sub; //保存父類原型 sub.sup = sup.prototyp; //檢測父類原型為父類自身 if(sup.prototype.constructor === Object.prototype.constructor){ sup.prototype.constructor = sup; } } function Person(name){ this.name = name; Factory.call(this,name); } extend(Person,Factory); Person.prototype.createFactory = function(){ switch(this.name){ case "Tom": return {name: "Tom", age: 10, sex: "male"}; case "Jerry": return {name: "Jerry", age: 20, sex: "female"}; default : return {}; } } let Tom = new Person("Tom"); let tom1 = Tom.createFactory();
這樣的好處是通用方法寫在工廠函數(shù)中,不需要重復(fù)實(shí)現(xiàn),不同個(gè)性化代碼在子類中實(shí)現(xiàn)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/88890.html
摘要:首先吧之前的代碼打包成一個(gè)新的設(shè)計(jì)模式公用代碼工廠模式要點(diǎn)工廠接口是工廠方法模式的核心,與調(diào)用者直接交互用來提供產(chǎn)品。適用場景在任何需要生成復(fù)雜對象的地方,都可以使用工廠方法模式。 工廠模式 之前講了接口,封裝,繼承,單例等,現(xiàn)在就需要應(yīng)用這些特性來完成一些設(shè)計(jì)模式了。首先吧之前的代碼打包成一個(gè)新的JS DesignPattern.js // 設(shè)計(jì)模式公用代碼 exports...
摘要:工廠模式定義一個(gè)用于創(chuàng)建對象的接口,這個(gè)接口由子類決定實(shí)例化哪一個(gè)類。實(shí)現(xiàn)一個(gè)簡單的實(shí)現(xiàn),使用如果使用對象屬性來實(shí)現(xiàn)以下例子中的工廠方法接受在運(yùn)行時(shí)以字符串形式指定的類型,然后創(chuàng)建并返回所請求類型的對象。 1. 簡介 工廠模式的目的是為了創(chuàng)建對象,它通常在類或者類的靜態(tài)方法中實(shí)現(xiàn),具有以下目標(biāo): 當(dāng)創(chuàng)建相似對象時(shí)執(zhí)行重復(fù)操作 當(dāng)編譯時(shí)不知道具體類型的情況下,為工廠客戶提供一個(gè)創(chuàng)建對象...
摘要:參考文章深入理解三種工廠模式工廠模式,工廠方法模式,抽象工廠模式詳解工廠模式是中最常用的設(shè)計(jì)模式之一。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式。 參考文章:深入理解java三種工廠模式工廠模式,工廠方法模式,抽象工廠模式 詳解 工廠模式(Factory Pattern)是 Java 中最常用的設(shè)計(jì)模式之一。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的...
摘要:簡介抽象工廠模式就是通過類的抽象使得業(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è)保留字,但...
摘要:抽象工廠模式可以向客戶端提供一個(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)行了分離 上一篇介紹了下單例模式,這一篇介紹一下工廠模式和抽象工廠模式,...
摘要:抽象工廠模式抽象工廠是工廠模式的升級版,他用來創(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)品的,那我...
閱讀 996·2023-04-26 01:47
閱讀 1680·2021-11-18 13:19
閱讀 2048·2019-08-30 15:44
閱讀 659·2019-08-30 15:44
閱讀 2301·2019-08-30 15:44
閱讀 1239·2019-08-30 14:06
閱讀 1428·2019-08-30 12:59
閱讀 1906·2019-08-29 12:49