国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

策略模式-javascript

岳光 / 1124人閱讀

摘要:一個基于策略模式的程序至少由兩部分組成。優(yōu)點(diǎn)策略模式利用組合委托和多態(tài)等技術(shù)和思想,可以有效地避免多重條件選擇語句。在策略模式中利用組合和委托來讓擁有執(zhí)行算法的能力,這也是繼承的一種更輕便的替代方案。

一個基于策略模式的程序至少由兩部分組成。
第一個部分是一組策略類,策略類封裝了具體的算法,并負(fù)責(zé)具體的計算過程。第二個部分是環(huán)境類Context,Context接受客戶的請求,隨后把請求委托給某一個策略類。

優(yōu)點(diǎn):

策略模式利用組合、委托和多態(tài)等技術(shù)和思想,可以有效地避免多重條件選擇語句。

策略模式提供了對開放—封閉原則的完美支持,將算法封裝在獨(dú)立的strategy中,使得它們易于切換,易于理解,易于擴(kuò)展。

策略模式中的算法也可以復(fù)用在系統(tǒng)的其他地方,從而避免許多重復(fù)的復(fù)制粘貼工作。

在策略模式中利用組合和委托來讓Context擁有執(zhí)行算法的能力,這也是繼承的一種更輕便的替代方案。

缺點(diǎn):

首先,使用策略模式會在程序中增加許多策略類或者策略對象,但實際上這比把它們負(fù)責(zé)的邏輯堆砌在Context中要好。

其次,要使用策略模式,必須了解所有的strategy,必須了解各個strategy之間的不同點(diǎn),這樣才能選擇一個合適的strategy。比如,我們要選擇一種合適的旅游出行路線,必須先了解選擇飛機(jī)、火車、自行車等方案的細(xì)節(jié)。此時strategy要向客戶暴露它的所有實現(xiàn),這是違反最少知識原則的。

策略模塊:(環(huán)境類)

define(function () {
    "use strict";

    var Validator = function () { };

    Validator.prototype.selectValidator = function (validator) {
        this.validator = validator;//validator就是驗證函數(shù)

        return this;  //this指向validator對象
    };

    Validator.prototype.validate = function (value) {
        if (this.validator) {
            return this.validator.validate(value);//this.validator驗證函數(shù)
        }
        throw ("No validator selected");
    };

    return Validator;
});

郵箱驗證模塊(策略類)

define(function () {
    "use strict";

    return {
        validate: function (value) {
            return value.indexOf("@") !== -1;//簡單的郵箱驗證
        }
    };
});

號碼驗證模塊(策略類)

define(function () {
    "use strict";

    return {
        validate: function (value) {
            return (/^[0-9]{11}$/g).test(value);//可以嚴(yán)謹(jǐn)些
        }
    }
});

init模塊

define(function (require) {
    "use strict";

    return {
        init: function () {

            var Strategy = require("strategy/strategy"),
                telValidator = require("strategy/telValidator"),
                emailValidator = require("strategy/emailValidator"),
                validator;

            validator = new Strategy();

            console.log(validator.selectValidator(telValidator).validate(012345678901));

            console.log(validator.selectValidator(emailValidator).validate("test"));
        }

    };

});

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/78815.html

相關(guān)文章

  • JavaScript設(shè)計模式----策略模式

    摘要:實際上在這種將函數(shù)作為一等對象的語言里,策略模式已經(jīng)融入到了語言本身當(dāng)中,我們經(jīng)常使用高階函數(shù)來封裝不同的行為,并且把它傳遞到另一個函數(shù)中。 聲明:這個系列為閱讀《JavaScript設(shè)計模式與開發(fā)實踐》 ----曾探@著一書的讀書筆記 1.策略模式的定義 將不變的部分和變化的部分隔開是每個設(shè)計模式的主題。 定義一系列的算法,把它們一個個封裝起來,并且使它們可以相互替換。 2.策略模式...

    forrest23 評論0 收藏0
  • JavaScript 設(shè)計模式(二):策略模式

    摘要:策略模式實現(xiàn)的也是類似的場景。第二個部分是環(huán)境類不變,接收客戶的請求,隨后把請求委托給某一個策略類。參考文章設(shè)計模式設(shè)計模式與開發(fā)實踐設(shè)計模式系統(tǒng)講解與應(yīng)用本文首發(fā),期待作者以樂之名本文原創(chuàng),有不當(dāng)?shù)牡胤綒g迎指出。 showImg(https://segmentfault.com/img/bVbugi7?w=800&h=600); 策略模式:定義一系列的算法,把它們一個個封裝起來,并且...

    荊兆峰 評論0 收藏0
  • JavaScript設(shè)計模式與開發(fā)實踐系列之策略模式

    摘要:本系列為設(shè)計模式與開發(fā)實踐作者曾探學(xué)習(xí)總結(jié),如想深入了解,請支持作者原版策略模式策略模式的定義定義一系列的算法,把它們一個個封裝起來,并且使它們可以互相替換。 本系列為《JavaScript設(shè)計模式與開發(fā)實踐》(作者:曾探)學(xué)習(xí)總結(jié),如想深入了解,請支持作者原版 策略模式 策略模式的定義:定義一系列的算法,把它們一個個封裝起來,并且使它們可以互相替換。 舉個形象的例子,使用策略模式計算...

    spademan 評論0 收藏0
  • JS策略模式JavaScript設(shè)計模式與開發(fā)實踐》閱讀筆記

    摘要:策略模式可以避免代碼中的多重判斷條件。策略模式在程序中或多或少的增加了策略類。此文僅記錄本人閱讀設(shè)計模式與開發(fā)實踐這個本時的感受,感謝作者曾探寫出這么好的一本書。設(shè)計模式中很重要的一點(diǎn)就是將不變和變分離出來。參考設(shè)計模式與開發(fā)實踐曾探 策略模式的定義是:定義一系列的算法,把它們一個個封裝起來,并且是它們可以相互替換。 策略模式可以避免代碼中的多重判斷條件。 策略模式很好的體現(xiàn)了開放-...

    Amos 評論0 收藏0
  • javascript設(shè)計模式--策略模式

    摘要:策略模式總結(jié)什么是策略模式策略模式的定義是定義一系列的算法,把他們獨(dú)立封裝起來,并且可以相互替換。策略模式的使用如果策略模式僅僅是用來封裝算法,可能有點(diǎn)小才大用了。原文鏈接設(shè)計模式策略模式上一篇設(shè)計模式單例模式 javascript策略模式總結(jié) 1.什么是策略模式? 策略模式的定義是:定義一系列的算法,把他們獨(dú)立封裝起來,并且可以相互替換。 例如我們需要寫一段代碼來計算員工的獎金。當(dāng)績...

    ztyzz 評論0 收藏0
  • javascript設(shè)計模式--策略模式

    摘要:策略模式總結(jié)什么是策略模式策略模式的定義是定義一系列的算法,把他們獨(dú)立封裝起來,并且可以相互替換。策略模式的使用如果策略模式僅僅是用來封裝算法,可能有點(diǎn)小才大用了。原文鏈接設(shè)計模式策略模式上一篇設(shè)計模式單例模式 javascript策略模式總結(jié) 1.什么是策略模式? 策略模式的定義是:定義一系列的算法,把他們獨(dú)立封裝起來,并且可以相互替換。 例如我們需要寫一段代碼來計算員工的獎金。當(dāng)績...

    李文鵬 評論0 收藏0

發(fā)表評論

0條評論

岳光

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<