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 件のコメント:
コメントを投稿