最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript 設(shè)計模式學(xué)習(xí) Factory

 更新時間:2009年07月29日 01:42:31   作者:  
通過接口實現(xiàn)工廠,這是通過List方式顯示RSS 等實現(xiàn)代碼。
復(fù)制代碼 代碼如下:

/* DisplayModule interface. */
var DisplayModule = new Interface('DisplayModule', ['append', 'remove', 'clear']);
/* ListDisplay class. */
//通過接口實現(xiàn)工廠,這是通過List方式顯示RSS
var ListDisplay = function(id, parent) { // implements DisplayModule
this.list = document.createElement('ul');
this.list.id = id;
parent.appendChild(this.list);
};
ListDisplay.prototype = {
append: function(text) {
var newEl = document.createElement('li');
this.list.appendChild(newEl);
newEl.innerHTML = text;
return newEl;
},
remove: function(el) {
this.list.removeChild(el);
},
clear: function() {
this.list.innerHTML = '';
}
};
/* Configuration object. */
var conf = {
id: 'cnn-top-stories',
feedUrl: 'http://rss.cnn.com/rss/cnn_topstories.rss',
updateInterval: 60, // In seconds.
parent: $('feed-readers')
};
/* FeedReader class. */
var FeedReader = function(display, xhrHandler, conf) {
this.display = display;
this.xhrHandler = xhrHandler;
this.conf = conf;
this.startUpdates();
};
FeedReader.prototype = {
fetchFeed: function() {
var that = this;
var callback = {
success: function(text, xml) { that.parseFeed(text, xml); },
failure: function(status) { that.showError(status); }
};
this.xhrHandler.request('GET', 'feedProxy.php?feed=' + this.conf.feedUrl,
callback);
},
parseFeed: function(responseText, responseXML) {
this.display.clear();
var items = responseXML.getElementsByTagName('item');
for(var i = 0, len = items.length; i < len; i++) {
var title = items[i].getElementsByTagName('title')[0];
var link = items[i].getElementsByTagName('link')[0];
this.display.append('<a href="' + link.firstChild.data + '">' +
title.firstChild.data + '</a>');
}
},
showError: function(statusCode) {
this.display.clear();
this.display.append('Error fetching feed.');
},
stopUpdates: function() {
clearInterval(this.interval);
},
startUpdates: function() {
this.fetchFeed();
var that = this;
this.interval = setInterval(function() { that.fetchFeed(); },
this.conf.updateInterval * 1000);
}
};
/* FeedManager namespace. */
//工廠管理器,這里可以根據(jù)傳進來的參數(shù)選擇具體的Display
var FeedManager = {
createFeedReader: function(conf) {
var displayModule = new ListDisplay(conf.id + '-display', conf.parent);
Interface.ensureImplements(displayModule, DisplayModule);
var xhrHandler = XhrManager.createXhrHandler();
Interface.ensureImplements(xhrHandler, AjaxHandler);
return new FeedReader(displayModule, xhrHandler, conf);
}
};
=====================================================
另一個自行車工廠的例子:
var BicycleShop = function() {};
BicycleShop.prototype = {
sellBicycle: function(model) {
var bicycle = this.createBicycle(model);
bicycle.assemble();
bicycle.wash();
return bicycle;
},
createBicycle: function(model) {
throw new Error('Unsupported operation on an abstract class.');
}
};
/* AcmeBicycleShop class. */
var AcmeBicycleShop = function() {};
extend(AcmeBicycleShop, BicycleShop);
AcmeBicycleShop.prototype.createBicycle = function(model) {
var bicycle;
switch(model) {
case 'The Speedster':
bicycle = new AcmeSpeedster();
break;
case 'The Lowrider':
bicycle = new AcmeLowrider();
break;
case 'The Flatlander':
bicycle = new AcmeFlatlander();
break;
case 'The Comfort Cruiser':
default:
bicycle = new AcmeComfortCruiser();
}
Interface.ensureImplements(bicycle, Bicycle);
return bicycle;
};
/* GeneralProductsBicycleShop class. */
var GeneralProductsBicycleShop = function() {};
extend(GeneralProductsBicycleShop, BicycleShop);
GeneralProductsBicycleShop.prototype.createBicycle = function(model) {
var bicycle;
switch(model) {
case 'The Speedster':
bicycle = new GeneralProductsSpeedster();
break;
case 'The Lowrider':
bicycle = new GeneralProductsLowrider();
break;
case 'The Flatlander':
bicycle = new GeneralProductsFlatlander();
break;
case 'The Comfort Cruiser':
default:
bicycle = new GeneralProductsComfortCruiser();
}
Interface.ensureImplements(bicycle, Bicycle);
return bicycle;
};

/* Usage. */
復(fù)制代碼 代碼如下:

var alecsCruisers = new AcmeBicycleShop();
var yourNewBike = alecsCruisers.sellBicycle('The Lowrider');
var bobsCruisers = new GeneralProductsBicycleShop();
var yourSecondNewBike = bobsCruisers.sellBicycle('The Lowrider');

相關(guān)文章

  • typescript在node.js下使用別名(paths)無效的問題詳解

    typescript在node.js下使用別名(paths)無效的問題詳解

    這篇文章主要給大家介紹了關(guān)于typescript在node.js下使用別名(paths)無效問題的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-07-07
  • js+html5實現(xiàn)手機九宮格密碼解鎖功能

    js+html5實現(xiàn)手機九宮格密碼解鎖功能

    這篇文章主要為大家詳細(xì)介紹了js+html5實現(xiàn)手機九宮格密碼解鎖功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • JS實現(xiàn)同一個網(wǎng)頁布局滑動門和TAB選項卡實例

    JS實現(xiàn)同一個網(wǎng)頁布局滑動門和TAB選項卡實例

    這篇文章主要介紹了JS實現(xiàn)同一個網(wǎng)頁布局滑動門和TAB選項卡效果,通過簡單的自定義切換函數(shù)setTab實現(xiàn)頁面元素的遍歷及屬性切換的功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • javascript之querySelector和querySelectorAll使用說明

    javascript之querySelector和querySelectorAll使用說明

    其實關(guān)于querySelector和querySelectorAll的介紹說明很多,在此主要是做個記錄
    2011-10-10
  • js性能優(yōu)化技巧

    js性能優(yōu)化技巧

    性能優(yōu)化:簡而言之,就是在不影響系統(tǒng)運行正確性的前提下,使之運行地更快,完成特定功能所需的時間更短,本篇文章給大家介紹js性能優(yōu)化技巧,需要的朋友參考下
    2015-11-11
  • webpack4簡單入門實例

    webpack4簡單入門實例

    這篇文章主要介紹了webpack4簡單入門實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • js圖片輪播手動切換特效

    js圖片輪播手動切換特效

    這篇文章主要為大家詳細(xì)介紹了js圖片輪播手動切換特效,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • javascript事件的傳播基礎(chǔ)實例講解(35)

    javascript事件的傳播基礎(chǔ)實例講解(35)

    這篇文章主要為大家詳細(xì)介紹了javascript事件的傳播基礎(chǔ)實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • javascript設(shè)計模式 – 建造者模式原理與應(yīng)用實例分析

    javascript設(shè)計模式 – 建造者模式原理與應(yīng)用實例分析

    這篇文章主要介紹了javascript設(shè)計模式 – 建造者模式,結(jié)合實例形式分析了javascript建造者模式相關(guān)概念、原理、應(yīng)用場景及操作注意事項,需要的朋友可以參考下
    2020-04-04
  • 微信小程序中顯示倒計時代碼實例

    微信小程序中顯示倒計時代碼實例

    這篇文章主要介紹了微信小程序中顯示倒計時,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評論

昭通市| 彭州市| 嘉善县| 新沂市| 兴和县| 天等县| 临颍县| 云浮市| 张掖市| 古田县| 郁南县| 盐津县| 巨鹿县| 钟祥市| 萝北县| 山西省| 明光市| 衡南县| 贵州省| 县级市| 平谷区| 常熟市| 密云县| 秦皇岛市| 北海市| 连州市| 胶州市| 北流市| 吉首市| 内乡县| 延吉市| 永吉县| 德钦县| 六枝特区| 酒泉市| 阳朔县| 大石桥市| 左云县| 连南| 嘉峪关市| 肇东市|