【デザインモードシリーズ】の【ディエゼルモード】
14165 ワード
前書き:コードのレベルを上げるには、デザインモードを避けられません.前にもいくつかの理解がありましたが、深く勉強していません.最近はシステムの勉強をして、デザインを高めて、結合する能力を高めて、いい本を見つけました.
ローズマリーモード定義と紹介 内部ローズマリー JavaScriptにおけるローズマリーモード ディショナーモードの例 定義と紹介
ディケンサモードとは、統合されたオブジェクトのそれぞれの要素に順次アクセスする方法を提供し、オブジェクトの内部表現を露出する必要がないことを意味する.
ディケンサモードは、反復のプロセスをトラヒックロジックから分離し、ディケンサモードを使用した後、対象の内部構造に関心がなくても、その中の各要素に順番にアクセスすることができます.
ローズマリーモードは比較的シンプルなデザインモデルで、多くの時にはデザインモードとは思えません.今はほとんどの言語にローズマリーが内蔵されています.
現代語には、jsの
私たちがjsでよく使う
一方、外部のローズマリーは次の要素を明示的に要求し反復しなければならない.たとえば:
前のコードには、ファイルをアップロードする際に、ブラウザによって該当するアップロードコンポーネントオブジェクトを取得する必要があると仮定します.
ローズマリーモード
ディケンサモードとは、統合されたオブジェクトのそれぞれの要素に順次アクセスする方法を提供し、オブジェクトの内部表現を露出する必要がないことを意味する.
ディケンサモードは、反復のプロセスをトラヒックロジックから分離し、ディケンサモードを使用した後、対象の内部構造に関心がなくても、その中の各要素に順番にアクセスすることができます.
ローズマリーモードは比較的シンプルなデザインモデルで、多くの時にはデザインモードとは思えません.今はほとんどの言語にローズマリーが内蔵されています.
現代語には、jsの
Array.prototype.forEach
などのローズマリーが内蔵されています.私達も自分で一つのローズマリーを実現できます.const each = (arr, cb) {
for(let i=0; i<arr.length; i++){
cb.call(arr[i], i, arr[i]);
}
}
内部ローズマリーと外部ローズマリー私たちがjsでよく使う
forEach
は内部ローズマリーであり、その内部で反復規則が定義されています.彼は反復プロセス全体を完全に引き継ぎます.外部は最初の呼び出しだけが必要です.一方、外部のローズマリーは次の要素を明示的に要求し反復しなければならない.たとえば:
const Iterator = function(arr) {
const current = 0;
const next = function(){
current += 1;
}
const isDone = function(){
return current >= arr.length;
}
const getCurrentItem = function(){
return arr[current];
}
return {
next,
isDone,
getCurrentItem,
}
}
// ,
Iterator.isDone() //
Iterator.next() //
Iterator.getCurrentItem() //
JavaScriptのローズマリーモードArray.prototype.forEach
ローズマリーモードの例前のコードには、ファイルをアップロードする際に、ブラウザによって該当するアップロードコンポーネントオブジェクトを取得する必要があると仮定します.
//
const getUploadObj = function() {
try{
return new ActiveXObject('TXFTNActive.FTNUpload'); // IE
} cache(e) {
if(supportFlash()){ // flash
const str = '