摘要:簡單工廠模式又叫靜態(tài)工廠方法模式,由一個工廠對象決定創(chuàng)建某一種產(chǎn)品對象類的實例。主要用來創(chuàng)建同一類對象。場景一比如體育商店賣體育器材,里面有很多體育用品,及相關(guān)介紹,當(dāng)我們想買一個籃球及相關(guān)介紹時,只需要溫售貨員,他會幫你找到所有的東西。
簡單工廠模式又叫靜態(tài)工廠方法模式,由一個工廠對象決定創(chuàng)建某一種產(chǎn)品對象類的實例。主要用來創(chuàng)建同一類對象。
場景一:
比如體育商店賣體育器材,里面有很多體育用品,及相關(guān)介紹,當(dāng)我們想買一個籃球及相關(guān)介紹時,只需要溫售貨員,他會幫你找到所有的東西。
//籃球基類 var Baseketball = function () { this.intro = "籃球盛行于美國" } Baseketball.prototype ={ getMember:function () { console.log("每個隊伍需要5名隊員"); }, getBallSize:function () { console.log("籃球很大"); } } //足球基類 var Football = function () { this.intro = "足球在世界范圍內(nèi)很流行"; } Football.prototype = { getMember:function () { console.log("每個隊伍需要11名隊員"); }, getBallSize:function () { console.log("足球很大") } } //網(wǎng)球基類 var Tennis = function () { this.intro = "每年有很多網(wǎng)球系列賽"; } Tennis.prototype = { getMember:function () { console.log("每個隊伍需要1名隊員"); }, getBallSize:function () { console.log("網(wǎng)球很小"); } } //運動工廠 var SportFactory = function (name) { switch (name) { case "NBA":return new Baseketball(); case "wordCup":return new Football(); case "FrenchOpen":return new Tennis(); } } //為世界杯創(chuàng)造一個足球,只需要記住運動工廠SportsFactory,調(diào)用并且創(chuàng)建 var football = SportFactory("wordCup"); console.log(football); console.log(football.intro); football.getMember();
場景二:
登錄模塊和注冊模塊的需求中有許多提示框,可以利用簡單工廠模式,將提示框互相借鑒
var PopFactory = function (name) { switch (name) { case "alert":return new LoginAlert(); case "confirm":return new LoginConfirm(); case "promt":return new LoginPrompt(); } }
但是LoginAlert、LoginConfirm、LoginPrompt有很多是相同的,這時可以抽取相同的出來,如下:
function createPop(type,text) { //創(chuàng)建一個對象,并對對象拓展屬性和方法 var o =new Object(); o.content = text; o.show = function () { //顯示方法 } if(type == "alert"){ //警示框差異部分 } if(type == "prompt"){ //提示框差異部分 } if(type == "confirm"){ //確認(rèn)框差異部分 } //將對象返回 return o; } //創(chuàng)建警示框 var userNameAlert = createPop("alert","用戶名只能是26個字母和數(shù)字");
這兩種方式創(chuàng)建簡單工廠模式有區(qū)別,第一種是通過類實例化對象創(chuàng)建的,第二種是創(chuàng)建一個新對象然后包裝增強(qiáng)其屬性和功能來實現(xiàn)的。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/97973.html
摘要:從設(shè)計模式的分類來看簡單工廠模式是創(chuàng)建型模式。使用簡單工廠模式將會增加系統(tǒng)中類的個數(shù),在一定程序上增加了系統(tǒng)的復(fù)雜度和理解難度。簡單工廠模式由于使用了靜態(tài)工廠方法,造成工廠角色無法形成基于繼承的等級結(jié)構(gòu)。 簡單工廠模式提供了一個接口可以根據(jù)傳遞的參數(shù)的不同創(chuàng)建不同的對象,從而將對象自身的邏輯與對象的創(chuàng)建分離開。 從設(shè)計模式的分類來看簡單工廠模式是創(chuàng)建型模式。事實上與簡單工廠模式類似的還...
摘要:設(shè)計模式工廠模式最近閱讀了幾本設(shè)計模式方面的書籍學(xué)習(xí)之余整理下來方便以后的歸納和梳理設(shè)計模式工廠模式創(chuàng)造工廠模式是一種創(chuàng)建性模式也就是一種創(chuàng)建對象的最佳實踐首先我們需要理解為什么我們需要工廠模式想象一個場景如果你要求去買一些東西板燒雞腿 Javascript設(shè)計模式-工廠模式 最近閱讀了幾本設(shè)計模式方面的書籍,學(xué)習(xí)之余整理下來,方便以后的歸納和梳理 設(shè)計模式-工廠模式 創(chuàng)造工廠模式是一...
摘要:設(shè)計模式共有種,我今天先來了解一下工廠模式,其他的模式將會在后續(xù)的博客中陸續(xù)為大家講解。工廠模式主要分為簡單工廠模式和抽象工廠模式。抽象工廠模式抽象工廠模式與簡單工廠函數(shù)不同的是,抽象工廠函數(shù)會先設(shè)計好接口,具體的實現(xiàn)在子類中進(jìn)行。 設(shè)計模式 設(shè)計模式(design pattern)概念:是一套反復(fù)使用、思想成熟、經(jīng)過分類和無數(shù)實戰(zhàn)設(shè)計經(jīng)驗的總結(jié)。是為了代碼可重用、可擴(kuò)展、可解耦、更容...
摘要:基于工廠角色和產(chǎn)品角色的多態(tài)性設(shè)計是工廠方法模式的關(guān)鍵。工廠方法模式之所以又被稱為多態(tài)工廠模式,是因為所有的具體工廠類都具有同一抽象父類。工廠方法模式總結(jié)工廠方法模式是簡單工廠模式的進(jìn)一步抽象和推廣。 JavaScript工廠模式 首先需要說一下工廠模式。工廠模式根據(jù)抽象程度的不同分為三種 簡單工廠模式 工廠方法模式 抽象工廠模式 1.簡單工廠模式 簡單工廠模式:又稱為靜態(tài)工廠方法...
摘要:工廠方法模式,通過對產(chǎn)品類的抽象使其創(chuàng)建業(yè)務(wù),主要負(fù)責(zé)創(chuàng)建多類產(chǎn)品的實例。安全模式類安全模式類可以屏蔽使用類的錯誤造成的錯誤。可以將工廠方法看作是一個實例化對象的工廠類,安全起見,采用安全模式類,將創(chuàng)建對象的基類放在工廠方法類的原型中即可。 工廠方法模式,通過對產(chǎn)品類的抽象使其創(chuàng)建業(yè)務(wù),主要負(fù)責(zé)創(chuàng)建多類產(chǎn)品的實例。前面記錄了簡單工廠模式,但是需求時不斷變化的,當(dāng)需求簡單時,直接創(chuàng)建對象...
摘要:集中實例化的函數(shù)第一個實例第二個實例工廠模式的分類工廠模式分為簡單工廠抽象工廠和智能工廠,工廠模式不顯示地要求使用一個構(gòu)造函數(shù)。工廠模式之弊大多數(shù)類最好使用關(guān)鍵字和構(gòu)造函數(shù),可以讓代碼更加簡單易讀。帶原型的構(gòu)造器中有一個名為的屬性。 什么是模式 前陣子準(zhǔn)備期末考試,挺累也挺忙的,實在閑不得空來更新文章,今天和大家說說javascript中的設(shè)計模式。 首先呢,我們需要知道的是:模式是一...
閱讀 1924·2021-11-19 09:40
閱讀 2132·2021-10-09 09:43
閱讀 3294·2021-09-06 15:00
閱讀 2810·2019-08-29 13:04
閱讀 2766·2019-08-26 11:53
閱讀 3512·2019-08-26 11:46
閱讀 2320·2019-08-26 11:38
閱讀 390·2019-08-26 11:27