Node.js 適配器模式

有的時候在開發過程中,我們會發現,客戶端需要的接口和提供的接口發生不兼容的問題。由於特殊的原因我們無法修改客戶端接口。在這種情況下,我們需要適配現有接口和不兼容的類,這就要提到適配器模式。通過適配器,我們可以在不用修改舊代碼的情況下也能使用它們,這就是適配器的能力。

1。基本理論:
適配器模式:將一個接口轉換成客戶端需要的接口而不需要去修改客戶端代碼,使得不兼容的代碼可以一起工作。

適配器主要有3個角色組成:
(1)客戶端:調用接口的類
(2)適配器:用來連接客戶端接口和提供服務的接口的類
(3)適配者:提供服務,但是卻與客戶端接口需求不兼容服務類。


2。 簡單例子

客戶端調用一個方法進行加法計算:

var result = add(1,2);
但是我們沒有提供add這個方法,提供了同樣類似功能的sum方法:
function sum(v1,v2){
   return v1 + v2;
}

爲了避免修改客戶端和服務端,我們增加一個包裝函數:

function add (v1,v2){
   reutrn sum(v1,v2);
}

就是一個最簡單的適配器模式,我們在兩個不兼容的接口之間添加一個包裝方法,用這個方法來連接二者使其共同工作。


3。 下面我們看一下node.js中如何實現適配器模式

創建3個類:Target, Adapter,Adaptee。

3。1創建Target類,其中包含request方法。代碼如下:

/*target.js*/

module.exports = function(){

    this.rquest = function(){

        console.log("Target::request");

    }

}


3.2 創建Adapter類,繼承Target類,並重定義request方法。代碼如下:

/*adapter.js*/
var util = require("util");
var Target = require('./target');
var Adaptee = require('./adaptee');


function Adapter(){
    Target.call(this);
    this.request = function(){
    var adapteeObj = new Adaptee();
    adapteeObj.specialRequest();
    }
}


util.inherits(Adapter,Target);
module.exports = Adapter;

3.3 創建Adaptee類,實現specialRequest方法。代碼如下:

module.exports = function(){
this.specialRequest = function(){
console.log("Adaptee::specialRequest");
}
}


3.4創建測試腳本client.js

/*client.js*/
var Adapter = require("./adapter");


var target = new Adapter();
target.request();


3.5 運行結果:

Adaptee::specialRequest








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章