本文實例講述了NodeJS設(shè)計模式。分享給大家供大家參考,具體如下:

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),鎮(zhèn)雄企業(yè)網(wǎng)站建設(shè),鎮(zhèn)雄品牌網(wǎng)站建設(shè),網(wǎng)站定制,鎮(zhèn)雄網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,鎮(zhèn)雄網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
1 . 單例模式
顧名思義,單例就是保證一個類只有一個實例,實現(xiàn)的方法是,先判斷實例是否存在,如果存在則直接返回,若不存在,則創(chuàng)建實例對象,并將實例對象保存在靜態(tài)變量中,當下次請求時,則可以直接返回這個對象實例,這就確保了一個類只有一個實例對象。舉個例子吧~一間學(xué)校剛剛起建還沒有圖書館,有的同學(xué)就向領(lǐng)導(dǎo)提意見:"hey! 哥們,能不能幫我們建一個圖書館? "(想要一個圖書館實例),然后領(lǐng)導(dǎo)說:"no problem啊!等我一下,馬上建給你"(實例還沒有建立,便創(chuàng)建一個)。幾個月后,圖書館建好了~有位奇葩同學(xué)也想去圖書館,他卻向領(lǐng)導(dǎo)提出要求: "hey! 哥們,我想去圖書館,能不能幫我建一個?"然后領(lǐng)導(dǎo)說: "no problem個頭阿!那邊已經(jīng)建好了一個,你去那間不就可以了嗎!"(當實例已經(jīng)存在的時候,則直接返回已經(jīng)創(chuàng)建的實例)
/*singleInstance.js*/
var _instance = null;//定義初始化_instance
module.exports = function(time){
function Car(time){
this.time = time;
}
this.getInstance = function(){
if(_instance != null){
return _instance;
}else{
return new Car(time);
}
}
}
2. 適配器模式
若將一個類的接口轉(zhuǎn)換為客戶希望的另外一個接口,適配器模式可以使原本由于接口不兼容而不能一起工作的那些類可以一起工作。舉個例子吧~小明的老爸大明很愛喝白酒,但是呢喝酒又傷身,小明看到便不忍心,于是他想了方法:把白酒瓶子里面的酒倒掉,換成了白開水(重寫內(nèi)容)。大明看到還是那個酒瓶就沒太在意(接口沒有改變,只是內(nèi)容改變了),一口氣就把"酒"喝完了,還很高興~(此處假設(shè)大明智商比較低..)。因此支配器是一個既不得罪他人,也能達到自己目的的一個好方法~下面是具體的實現(xiàn)方法
/*target.js*/
module.exports = function(){
this.request = function(){//原接口
console.log('Target::request');
}
}
/*adapter.js*/
var util = require('util');
var Target = require('./target.js');
var Adaptee = require('./adaptee.js');
function Adapter(){
Target.call(this);
this.request = function(){//重寫原接口
var adapteeObj = new Adaptee();//重寫的內(nèi)容
adapteeObj.specialRequest();
}
}
util.inherits(Adapter, Target);//通過繼承原模塊, 獲得原接口
module.exports = Adapter;
3. 裝飾模式
裝飾模式可以通過繼承的方式,為一個基類對象擴展功能。舉個例子吧~一顆圣誕樹,一開始什么都沒有。然后Amy看到之后往樹上掛了幾個飾品(擴展原來的基類),然后Billy路過之后,覺得它還差點什么,就把圣誕樹拿過來(繼承),然后也往上面放點其他飾品(繼續(xù)擴展)。
/*Base.js*/
module.exports = function(){
this.dosomething = function(){
console.log("Nice to meet u.");
}
}
/*Decorator.js*/
var util = require("util);
var Base = require('./Base');
function Decorator(){
Base.call(this);
this.dosomething = function(){
Base.dosomething();
console.log('I am a decorator');//拓展內(nèi)容
}
}
util.inherits(Decorator, Base);//繼承
module.exports = Decorator;
4. 觀察者模式
什么是觀察者模式呢?舉個例子吧~小狗同學(xué)和小熊同學(xué)同時喜歡上了班里可愛的小兔同學(xué)。小狗和小熊都會注意著小兔的一舉一動,只有小兔有什么動靜他們兩個都會知道~相對而言呢,小狗和小熊就是小兔的"觀察者",而小兔呢就是"被觀察的對象"。比較重要的是:小兔發(fā)生的動靜(某個函數(shù)),會同時通知到觀察者小狗和小熊,讓他們兩個也會做出相應(yīng)的反饋(各自的回調(diào)函數(shù))
/*被觀察者*/
module.exports = function(){
var m_obserSet = [];//觀察者列表
var _self = this;
this.addObser = function(observer){
m_obserSet.push(observer);//添加觀察者
}
this.doAction = function(){
console.log("Observable do some action");
_self.notifyAllObeser();
}
this.notifyAllObeser = function(){//發(fā)生動作
for(var key in m_obserSet){//逐個通知觀察者
m_obserSet[key].update();//觀察者執(zhí)行回調(diào)
}
}
}
希望本文所述對大家nodejs程序設(shè)計有所幫助。
文章名稱:NodeJS設(shè)計模式總結(jié)【單例模式,適配器模式,裝飾模式,觀察者模式】
標題網(wǎng)址:http://chinadenli.net/article6/ggpoog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)站建設(shè)、搜索引擎優(yōu)化、網(wǎng)站制作、動態(tài)網(wǎng)站、手機網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)