JavaScript設計模式-- 策略(Strategy)模式

定義: 可在執行時期, 依照不同情況去選擇不同的策略方式。也就是使用相同的操作介面, 但卻能依照不同的程式內容去運作(但無論是什麼策略, 要達到的目的皆相同)。

e.g.

var data = {

    name: "Mary",
    message: "I am lucky!"

}; //資料封包

var Sender = function(strategy) {                              // 用來定義介面

    this.strategy = strategy;

}; //核心物件,利用建構式置入策略

Sender.prototype.send = function(data) {

    this.strategy.send(data);

}; //核心方法

var xmlStrategy = {

    send: function(data) {                                               // 因JavaScript沒工具幫忙轉, 所以自己轉

        var str = "<xml><name>" + data.name + "</name><message>" + data.message + "</message></xml>";
        console.log("Data:" + str);

    }

}; //訂定策略-xmlStrategy

var jsonStrategy = {

    send: function(data) {

        console.log("Data:" + JSON.stringify(data));    // JSON.stringify()為將JSON格式轉成字串, 因資料在傳遞時, 是以字串型別傳遞。而JSON.parse()是將字串轉成物件型式, 因當資料傳結束後, 要進行資料處理, 因而需轉成物件。

    }

}; //訂定策略-jsonStrategy

var xmlSender = new Sender(xmlStrategy);
var jsonSender = new Sender(jsonStrategy);

xmlSender.send(data);                            // Data: <xml><name>Mary</name><message>I am lucky!</message></xml>

jsonSender.send(data);                           // Data: {"name":"Mary","message":"I am lucky!"}



留言

熱門文章