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)
}
}
このように簡単な発表購読者モードを実現しましたが、コードにはいくつかのバグがあります.例えば、発表する時はひたすら巡回しています.発表のメッセージは購読者が必要かどうかを判断していません.