FormなどのGUI部分で、このラジオボックすでこっちが選ばれている時はこのinputを効かなくさせて、ここの値が20以下だった場合はこっちのselectリストをコレにして…
というのを1つ1つ条件分岐して処理を分けてると、そもそも大変で、仮に後から要素が1つ増えたりしたら、もうコントロールできなくなる。
なので、デザインパターンの1つMediatorパターンを使って管理するのが良いらしいので、JavaScriptでやる方法を調べてみた
複数のオブジェクト間の調整をする「相談役」を作る。
個々のオブジェクトはその相談役とだけコンタクトして、各オブジェクト同士ではコンタクトしない。
表示のコントロールのロジックは相談役にだけ書く
仲裁オブジェクトと各要素オブジェクトを作る。
//仲裁オブジェクト
var chusai = {
elems: [],
add: function(elem){
//要素を登録するメソッド
this.elems.push(elem);
},
change: function(){
var elems = this.elems;
for(var i = 0, len = elems.length; i < len; i++){
//要素のパラメータを取得したりとか色々やって処理する
}
}
};
var Elem = function(elem){
this.elem = elem;
};
Elem.prototype = {
add: function(){
//chusai任せ
chusai.add(this.elem);
},
change: function(){
//chusai任せ
//どういう処理するかは仲裁オブジェクト任せ
chusai.change();
}
};
var elem = new Elem(要素);
elem.add();
elem.change();
あってんのかな…?やや不安
参考:オライリーのサンプルコード(英語)
0 件のコメント:
コメントを投稿