javascriptのデザインパターンを理解して、購読モードを発表します.

2231 ワード

定期購読モードを発表して分かりやすい生活上の例を挙げます.
明さんはデパートに行った時、靴が気に入ったので、販売員から番号がないと言われましたが、この靴屋さんの中にはまだ商品を買います.この時明さんはどうすればいいですか?毎日このデパートに来て、商品の補充がありますか?これはちょっと頭が悪いようですね.普通なら、店員に再入荷したら連絡してください.残りのことは販売員に任せました.お店で商品を補充したら、販売員のお姉さんがお客さんの名簿を開けて、通知が必要なお客さんを遍歴してお知らせのメール/電話を送ります.
ということは、私たちのコードの中では実際によく見られますが、初級の開発者はこのような発表購読モードにまとめられていません.
  • DOMイベントは、DOM上でイベント関数をバインドしています.リリース・購読モードを使用しています.例えば、クリックイベントは、私達はbodyにイベント関数をバインドしますが、ユーザーがいつクリックするかを予知することはできません.実際の操作は、bodyのこのclickイベントを予約しました.bodyがクリックされると、予約者にこのメッセージを発表します.予約者はこのcliclkのイベント関数コードを実行します.
    
    document.body.addEventListener('click',function(){
         
        alert(1111)
    },false) //     
    document.body.click();//      ,  
    
    以上にいくつかのポイントがあります.
  • 誰がこの発表者(例の販売員)になりますか?
  • 例において、販売員は顧客の名簿を予約購読したことを記録しています.コードの中にも購読者の情報を保存する容器が必要です.
  • リリースはどうなりますか?上記の例では、販売員は一人ずつ電話でお知らせしています.遍歴的な方法で上記の例をトリガしてコードに変換します.
    var salesperson = {} //   ,       
    salesperson.note =[] //   ,        ,     
    salesperson.listen=function(fn){
           //     
        this.note.push(fn);     //      ,            
    }
    salesperson.trriger=function(){
          //    
        for(var i=0,fn;fn=this.note[i++];){
            fn.apply(this,arguments)
        }
    }
    
    このように簡単な発表購読者モードを実現しましたが、コードにはいくつかのバグがあります.例えば、発表する時はひたすら巡回しています.発表のメッセージは購読者が必要かどうかを判断していません.