亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

javascript工廠模式

2024-04-27 15:04:28
字體:
來源:轉載
供稿:網友

簡單工廠

單純使用new會導致兩個類之間的依賴性,當有多個類構造時,使用一個方法來實例化哪個具體的類,如下面的Fruit水果商店類,通過一個簡單的switch層來判斷。

var FruitShop = function(){}; FruitShop.PRototype = { showFruit: function(model){ var fruit; switch(model){ case 'Apple': fruit = new Apple(); break; case 'Banana': fruit = new Banana(); break; default: fruit = new Pear(); } Interface.check(fruit, FruitShop); //實現了FruitShop接口 fruit.wash(); fruit.sell(); return fruit; } }

各種水果之間可以互換使用,因為它們實現了接口FruitShop,因此擁有了水果的wash和sell方法,有關Interface類和check函數可以參考另一篇js中的接口,如果不實現相同接口,工廠模式所謂的批量生產類似對象的作用就失效了。 如果想增加一類水果怎么辦,還要修改Fruit類,然而Fruit類的功能并沒有修改,這樣的話我們考慮把創建新實例的邏輯再分離出來,以后想增加水果修改FruitFactory類就可以

var FruitFactory = { createFruit: function(model){ var fruit; switch(...) return fruit; } } var FruitShop = function(){}; FruitShop.prototype = { showFruit: function(model){ var fruit = FruitFactory.createFruit(model); fruit.wash(); fruit.sell(); return fruit; } }

真正的工廠模式

現在我們想讓每種水果決定從哪一類公司進貨

var FruitShop = function(){}' FruitShop.prototype = { showFruit: function(model){ var fruit = this.createFruit(model); fruit.wash(); fruit.sell(); return fruit; }, createFruit: function(model){ throw new Error('Unsupported Operation on a abstract class'); } }

Fruit現在是一個抽象類,它不能被實例化,設計一個特定的水果類需要擴展Fruit,重定義其中的createFruit方法。關于extend方法可以參考我另一篇js中的extend方法

var Ashop = function(){}; extend(Ashop, FruitShop); Ashop.prototype.createFruit = function(model){ var fruit; switch(model){ case 'Apple': fruit = new Apple(); break; case 'Banana': fruit = new Banana(); break; default: fruit = new Pear(); } Interface.check(fruit, Fruit); //實現了Fruit接口 fruit.wash(); fruit.sell(); return fruit; } var Bshop = function(){}; extend(Bshop, FruitShop); Bshop.prototype.createFruit = function(model){ ... }

這些工廠方法生成的對象都實現了FruitShop接口,所以在其他代碼眼中可以互換,現在的水果可以是Ashop或者Bshop中進貨的:

var shop1 = new Ashop(); var apple = shop1.showFruit('Apple'); var shop2 = new Bshop(); var apple = shop2.showFruit('Apple');

我們可以對每個子類進行修改,以支持相關廠家的不同水果,這是工廠模式最重要的特點。對fruit一般性的操作邏輯放在父類fruitShop中,而具體的fruit對象實例化則留在子類中,一般性的代碼集中在父類,而有變化的代碼封裝在子類中。

總結

如果需要像水果一樣,有多種需要實現同一接口的對象,這時我們就需要使用工廠模式對new對象的過程進行一些邏輯分析和封裝


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97成人精品区在线播放| 国产精品美女视频网站| 久久夜色精品亚洲噜噜国产mv| 国产日韩在线亚洲字幕中文| 国产suv精品一区二区| 日韩欧美成人精品| 川上优av一区二区线观看| 久久国产加勒比精品无码| 美女扒开尿口让男人操亚洲视频网站| 不卡av电影院| 91大神在线播放精品| 久久久久久国产精品久久| 在线亚洲欧美视频| 亚洲国产精品高清久久久| 国产精品久久久久久久一区探花| 亚洲白虎美女被爆操| 一本一道久久a久久精品逆3p| 亚洲精品久久久一区二区三区| 日韩欧美aaa| 91在线无精精品一区二区| 国产成人精品网站| 日韩av在线免费观看| 久久久在线视频| 57pao成人永久免费视频| 亚洲xxxx视频| 国产精品一区二区久久| 国产亚洲精品久久久| 韩国美女主播一区| 日韩成人av网址| 国产精品成人aaaaa网站| 亚洲天堂免费观看| 国产精品高清在线观看| 亚洲成**性毛茸茸| 91九色综合久久| 亚洲精品一区av在线播放| 日韩中文字幕在线精品| 国产精品成人一区二区三区吃奶| 亚洲国产欧美在线成人app| 欧美国产日韩精品| 91av视频在线| 精品福利在线观看| 日韩av资源在线播放| 久久久久久网址| 97精品国产97久久久久久免费| 国产一区二区av| 在线性视频日韩欧美| 国产91精品最新在线播放| 日韩精品在线观看一区| 中文字幕av日韩| 97精品视频在线播放| 97精品在线视频| 97久久精品人人澡人人爽缅北| 国产亚洲激情视频在线| 日韩va亚洲va欧洲va国产| 亚洲色图美腿丝袜| 色哟哟入口国产精品| 国内久久久精品| 午夜精品一区二区三区在线播放| 国产91精品网站| 国产精品一区久久| 精品国产电影一区| 国产精品视频成人| 国产精品欧美一区二区三区奶水| 欧美性高跟鞋xxxxhd| 久久九九国产精品怡红院| 国产999在线| 亚洲国产天堂久久综合| 成人免费自拍视频| 久久精品国产久精国产思思| 国产福利精品视频| 久久久这里只有精品视频| 亚洲精品综合精品自拍| 最近中文字幕日韩精品| 久久噜噜噜精品国产亚洲综合| 亚洲男人7777| 久久99久久99精品免观看粉嫩| 精品久久久久人成| 在线观看91久久久久久| 91精品91久久久久久| 欧美视频在线观看免费网址| 久久影视电视剧免费网站| 欧美综合在线第二页| 国产激情久久久| 亚洲美女在线看| 国产精品视频在线观看| 亚洲三级黄色在线观看| 亚洲天堂网在线观看| 97视频免费在线观看| 黑人狂躁日本妞一区二区三区| 亚洲第一视频网站| 久久精品电影一区二区| 成人黄色免费看| 亚洲日本欧美日韩高观看| 91免费视频网站| 中文字幕亚洲在线| 欧美激情亚洲综合一区| 日韩欧美在线视频观看| 欧美电影电视剧在线观看| 久久免费精品视频| 国产成人亚洲综合91| 欧美电影免费观看高清| 黑人巨大精品欧美一区二区免费| 欧美另类暴力丝袜| 最近中文字幕mv在线一区二区三区四区| 亚洲视频在线免费观看| 国产精品美女呻吟| 欧美成人午夜影院| 久久精品在线视频| 日韩精品免费视频| 久久久久久国产三级电影| 国产日韩欧美日韩大片| 国产91在线高潮白浆在线观看| 国产欧美在线看| 久久天天躁狠狠躁夜夜av| 欧美大荫蒂xxx| 日本成人免费在线| 亚洲性视频网站| 日韩欧美在线视频免费观看| 日韩美女视频免费看| 国产精品嫩草影院久久久| 亚洲激情在线视频| 色综合视频一区中文字幕| 欧美激情国产日韩精品一区18| 成人伊人精品色xxxx视频| 国外成人免费在线播放| 亚洲男人的天堂在线| 欧美日韩久久久久| 亚洲人午夜色婷婷| 精品国产一区二区三区四区在线观看| 欧美精品18videos性欧美| 久久久久久久999精品视频| 国内精品久久久久久| 亚洲码在线观看| 精品国产鲁一鲁一区二区张丽| 91香蕉电影院| 亚洲国产古装精品网站| 亚洲肉体裸体xxxx137| 欧美劲爆第一页| 日韩中文字幕网站| 俺去了亚洲欧美日韩| 亚洲jizzjizz日本少妇| 亚洲国产精品va在线| 久久久久久亚洲精品中文字幕| 亚洲一区二区三区在线视频| 欧美www视频在线观看| 欧美激情精品久久久久久黑人| 日韩美女视频免费看| 不卡av电影在线观看| 日韩免费在线免费观看| 国产精品视频内| 久久婷婷国产麻豆91天堂| 欧美成人sm免费视频| 国产精品白丝av嫩草影院| 亚洲美女在线看| 欧美激情在线播放| 精品国产一区二区三区久久久| 成人免费在线视频网址| 国产中文字幕日韩| 国产精品久久久久久久7电影| 亚洲人成自拍网站| 久久久欧美一区二区| 伊人久久免费视频| 亚洲成人激情在线观看| 国产精品第100页|