設計模式學習(三)

2021-08-13 18:43:20 字數 1612 閱讀 7712

2.策略模式

(要實現某乙個功能有多種方案可以選擇。比如乙個壓縮檔案的程式,既可以選擇 zip 演算法,也可以選擇 gzip 演算法。這些演算法靈活多樣,而且可以隨意互相替換。策略模式的定義是:定義一系列的演算法,把它們乙個個封裝起來,並且使它們可以相互替換。)

var strategies = , 

"a": function( salary ),

"b": function( salary )

}; var calculatebonus = function( level, salary );

console.log( calculatebonus( 's', 20000 ) ); // 輸出:80000

console.log( calculatebonus( 'a', 10000 ) ); // 輸出:30000

var s = function( salary ); 

var a = function( salary );

var b = function( salary );

var calculatebonus = function( func, salary );

calculatebonus( s, 10000 ); // 輸出:40000

2.1策略模式檢測提交資訊

/***********************策略物件**************************/ 

var strategies =

}, minlength: function( value, length, errormsg )

}, ismobile: function( value, errormsg )$)/.test( value ) )

} };

/***********************validator 類**************************/

var validator = function();

validator.prototype.add = function( dom, rules ));

})( rule )

} };

validator.prototype.start = function()

} };

/***********************客戶呼叫****************************/

var registerform = document.getelementbyid( 'registerform' );

var validatafunc = function(), ]);

validator.add( registerform.password, );

validator.add( registerform.phonenumber, );

var errormsg = validator.start();

return errormsg;

} registerform.onsubmit = function()

};

設計模式學習(三) 裝飾模式

在將模式之前,先對乙個oo設計原則掌握 對擴充套件開放和對修改關閉 無論如何,程式不能因為一些功能的修改就去該原來寫的,這樣只會越改越亂,因此,對修改遮蔽,和新增加的功能使用擴充套件的方式新增進去 裝飾者模式正可以做到這一點。這裡碰到的問題就是,軟體應對變化的能力,裝飾者模式提高了軟體的彈性,增加了...

設計模式學習筆記(三) 工廠模式

工廠模式的定義 假如你有乙個類a,要例項化這個類,最簡單的方法就是a a new a 如果要做一 些初始化的工作,通常會把這些操作寫在a的構造方法裡例如 a a new a parmeter 但是,也許有很多的初始化內容,如果把所有內容都放在建構函式裡面,就很不合適。在這種情境下就可以使用工廠模式,...

設計模式學習三 裝修者模式

一.概念 動態的給乙個物件新增額外的職責。想要擴充套件功能的話,裝飾者提供了一種有別於繼承的另外一種選擇。二.uml component 概念中提到的物件介面 也就是 被裝飾者 concreatecomponent 未新增任何職責的,物件介面的子類 decorator 裝飾者抽象類 擴張了物件介面的...