2012/06/12

[JavaScript] Mediatorパターンを使ってみる


FormなどのGUI部分で、このラジオボックすでこっちが選ばれている時はこのinputを効かなくさせて、ここの値が20以下だった場合はこっちのselectリストをコレにして…
というのを1つ1つ条件分岐して処理を分けてると、そもそも大変で、仮に後から要素が1つ増えたりしたら、もうコントロールできなくなる。
なので、デザインパターンの1つMediatorパターンを使って管理するのが良いらしいので、JavaScriptでやる方法を調べてみた

複数のオブジェクト間の調整をする「相談役」を作る。
個々のオブジェクトはその相談役とだけコンタクトして、各オブジェクト同士ではコンタクトしない。
表示のコントロールのロジックは相談役にだけ書く

仲裁オブジェクトと各要素オブジェクトを作る。
  1. //仲裁オブジェクト  
  2. var chusai = {  
  3.  elems: [],  
  4.  add: function(elem){  
  5.   //要素を登録するメソッド  
  6.   this.elems.push(elem);  
  7.  },  
  8.  change: function(){  
  9.   var elems = this.elems;  
  10.   for(var i = 0, len = elems.length; i < len; i++){  
  11.    //要素のパラメータを取得したりとか色々やって処理する  
  12.   }  
  13.  }  
  14. };  
  15.   
  16. var Elem = function(elem){  
  17.  this.elem = elem;  
  18. };  
  19. Elem.prototype = {  
  20.  add: function(){  
  21.   //chusai任せ  
  22.   chusai.add(this.elem);  
  23.  },  
  24.  change: function(){  
  25.   //chusai任せ  
  26.   //どういう処理するかは仲裁オブジェクト任せ  
  27.   chusai.change();  
  28.  }  
  29. };  
  30. var elem = new Elem(要素);  
  31.   
  32. elem.add();  
  33. elem.change();  
あってんのかな…?やや不安
参考:オライリーのサンプルコード(英語)

0 件のコメント:

コメントを投稿