摘要:從設(shè)計(jì)模式的分類(lèi)來(lái)看簡(jiǎn)單工廠模式是創(chuàng)建型模式。使用簡(jiǎn)單工廠模式將會(huì)增加系統(tǒng)中類(lèi)的個(gè)數(shù),在一定程序上增加了系統(tǒng)的復(fù)雜度和理解難度。簡(jiǎn)單工廠模式由于使用了靜態(tài)工廠方法,造成工廠角色無(wú)法形成基于繼承的等級(jí)結(jié)構(gòu)。
簡(jiǎn)單工廠模式提供了一個(gè)接口可以根據(jù)傳遞的參數(shù)的不同創(chuàng)建不同的對(duì)象,從而將對(duì)象自身的邏輯與對(duì)象的創(chuàng)建分離開(kāi)。
從設(shè)計(jì)模式的分類(lèi)來(lái)看簡(jiǎn)單工廠模式是創(chuàng)建型模式。事實(shí)上與簡(jiǎn)單工廠模式類(lèi)似的還有工廠模式和抽象工廠模式。那它們有什么區(qū)別呢?
我們從名字入手分析一下,簡(jiǎn)單 ,為什么叫簡(jiǎn)單工廠模式?因?yàn)樗鼉H僅只是分離了對(duì)象的創(chuàng)建和對(duì)象的使用,一旦有新的產(chǎn)品加入,就必須修改簡(jiǎn)單工廠中對(duì)象創(chuàng)建的方法,這樣并沒(méi)有遵守對(duì)修改封閉,對(duì)擴(kuò)展開(kāi)放的原則。所以這個(gè)模式的抽象和分離的還不夠徹底,相比而言工廠模式就在簡(jiǎn)單工廠模式的基礎(chǔ)之上加了一層對(duì)工廠的抽象,具體的產(chǎn)品由具體的工廠來(lái)創(chuàng)建,這樣新增產(chǎn)品就只需要新增一個(gè)工廠就行,并不會(huì)對(duì)原來(lái)的代碼產(chǎn)生影響,其次 工廠 ,這個(gè)對(duì)應(yīng)其創(chuàng)建型模式,用于創(chuàng)建對(duì)象。
應(yīng)用場(chǎng)景
JDK中的工具類(lèi)java.tet.DateFormat,用于格式化一個(gè)本地日期或時(shí)間。
public final static DateFormat getDateInstance(); public final static DateFormat getDateInstance(int style); public final static DateFormat getDateInstance(int style,Locale locale);
java加密技術(shù)
獲取不同加密算法的秘鑰生成器
KeyGenerator keyGen=KeyGenerator.getInstance("DESede");
創(chuàng)建密碼器
Cipher cp=Cipher.getInstance("DESede");UML圖 優(yōu)缺點(diǎn) 優(yōu)點(diǎn)
簡(jiǎn)單工廠模式把對(duì)象創(chuàng)建的邏輯進(jìn)行了封裝,在使用的對(duì)象的時(shí)候不需要了解創(chuàng)建的細(xì)節(jié)
創(chuàng)建對(duì)象可以使用對(duì)應(yīng)的參數(shù)來(lái)確定創(chuàng)建的具體對(duì)象,而不需要知道對(duì)象的類(lèi)名
缺點(diǎn)由于工廠類(lèi)集中了所有產(chǎn)品創(chuàng)建邏輯,一旦不能正常工作,整個(gè)系統(tǒng)都要受到影響。
使用簡(jiǎn)單工廠模式將會(huì)增加系統(tǒng)中類(lèi)的個(gè)數(shù),在一定程序上增加了系統(tǒng)的復(fù)雜度和理解難度。
系統(tǒng)擴(kuò)展困難,一旦添加新產(chǎn)品就不得不修改工廠邏輯,在產(chǎn)品類(lèi)型較多時(shí),有可能造成工廠邏輯過(guò)于復(fù)雜,不利于系統(tǒng)的擴(kuò)展和維護(hù)。
簡(jiǎn)單工廠模式由于使用了靜態(tài)工廠方法,造成工廠角色無(wú)法形成基于繼承的等級(jí)結(jié)構(gòu)。
代碼實(shí)例 代碼地址:simple-factory歡迎大家fork和pull request,希望大家一起能夠能夠一起交流學(xué)習(xí)設(shè)計(jì)模式,幫助我們用javascript寫(xiě)更專(zhuān)業(yè)的代碼
參考:
簡(jiǎn)單工廠模式
simple-factory-pattern
factory_pattern
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/78401.html
摘要:設(shè)計(jì)模式工廠模式最近閱讀了幾本設(shè)計(jì)模式方面的書(shū)籍學(xué)習(xí)之余整理下來(lái)方便以后的歸納和梳理設(shè)計(jì)模式工廠模式創(chuàng)造工廠模式是一種創(chuàng)建性模式也就是一種創(chuàng)建對(duì)象的最佳實(shí)踐首先我們需要理解為什么我們需要工廠模式想象一個(gè)場(chǎng)景如果你要求去買(mǎi)一些東西板燒雞腿 Javascript設(shè)計(jì)模式-工廠模式 最近閱讀了幾本設(shè)計(jì)模式方面的書(shū)籍,學(xué)習(xí)之余整理下來(lái),方便以后的歸納和梳理 設(shè)計(jì)模式-工廠模式 創(chuàng)造工廠模式是一...
摘要:基于工廠角色和產(chǎn)品角色的多態(tài)性設(shè)計(jì)是工廠方法模式的關(guān)鍵。工廠方法模式之所以又被稱為多態(tài)工廠模式,是因?yàn)樗械木唧w工廠類(lèi)都具有同一抽象父類(lèi)。工廠方法模式總結(jié)工廠方法模式是簡(jiǎn)單工廠模式的進(jìn)一步抽象和推廣。 JavaScript工廠模式 首先需要說(shuō)一下工廠模式。工廠模式根據(jù)抽象程度的不同分為三種 簡(jiǎn)單工廠模式 工廠方法模式 抽象工廠模式 1.簡(jiǎn)單工廠模式 簡(jiǎn)單工廠模式:又稱為靜態(tài)工廠方法...
摘要:簡(jiǎn)單工廠模式簡(jiǎn)單工廠模式又叫靜態(tài)工廠模式,由一個(gè)工廠對(duì)象決定創(chuàng)建某一種產(chǎn)品對(duì)象類(lèi)的實(shí)例。工廠方法模式工廠方法模式的本意是將實(shí)際創(chuàng)建對(duì)象的工作推遲到子類(lèi)中,這樣核心類(lèi)就變成了抽象類(lèi)。抽象工廠模式一般用在 1 什么是工廠模式? 工廠模式是用來(lái)創(chuàng)建對(duì)象的一種最常用的設(shè)計(jì)模式。我們不暴露創(chuàng)建對(duì)象的具體邏輯,而是將將邏輯封裝在一個(gè)函數(shù)中,那么這個(gè)函數(shù)就可以被視為一個(gè)工廠。工廠模式根據(jù)抽象程度的不...
摘要:簡(jiǎn)單工廠模式簡(jiǎn)單工廠模式又叫靜態(tài)工廠模式,由一個(gè)工廠對(duì)象決定創(chuàng)建某一種產(chǎn)品對(duì)象類(lèi)的實(shí)例。工廠方法模式工廠方法模式的本意是將實(shí)際創(chuàng)建對(duì)象的工作推遲到子類(lèi)中,這樣核心類(lèi)就變成了抽象類(lèi)。抽象工廠模式一般用在 1 什么是工廠模式? 工廠模式是用來(lái)創(chuàng)建對(duì)象的一種最常用的設(shè)計(jì)模式。我們不暴露創(chuàng)建對(duì)象的具體邏輯,而是將將邏輯封裝在一個(gè)函數(shù)中,那么這個(gè)函數(shù)就可以被視為一個(gè)工廠。工廠模式根據(jù)抽象程度的不...
閱讀 930·2021-10-11 10:59
閱讀 2860·2019-08-30 15:43
閱讀 2202·2019-08-30 11:08
閱讀 1708·2019-08-29 15:20
閱讀 1113·2019-08-29 13:53
閱讀 548·2019-08-26 13:24
閱讀 1698·2019-08-26 13:24
閱讀 2887·2019-08-26 12:08