php设计模式课程---4、观察者模式的好处是什么

一、总结

一句话总结:

方便选择之后去控制监听的板块数:比如选择男士之后,我可以决定监听广告里面的第二和第三板块。

1、为什么有观察者模式?

错误理解:根据不同的选择有不同的功能,比如选择男士,会有男士广告,选择女士,会有女士广告
正确理解:可以决定选择变化之后监听哪些板块,比如选择男士之后,我可以决定监听广告里面的第二和第三板块。

2、观察者模式如何实现(或者叫通知者模式更加合适)?

把监听的板块的名字放到一个数组,如果选择的对象发生变化,遍历数组更新对应的板块(执行对应板块的选择方法)。比如板块三,如果是男的,就选择汽车,是女的就选择化妆品
test3.update =  function (sel) {if(sel.value == '1') {this.innerHTML = '大众汽车';} else if (sel.value == '0') {this.innerHTML = '化妆品好好好';}
}

二、观察者模式的好处是什么

1、截图

2、代码

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="keyword" content="布尔教育">
 6     <title>Document</title>
 7 </head>
 8 <style>
 9 div {10     width: 80%;
11     height: 200px;
12     border: 1px solid blue;
13     margin: 10px;
14 }
15 </style>
16 <body>
17     <select name="sel" id="sel">
18     <option value="0">女式风格</option>
19     <option value="1">男式风格</option>
20     </select>
21     <input type="button" onclick="drop();" value="不引起广告的变化了">
22     <br><br><br><br>
23     <div id="test2">新闻</div>
24     <div id="test3">广告</div>
25 </body>
26 <script>
27
28 var sel = document.getElementById('sel');
29 sel.observes = [];
30 sel.attach = function(obj) {
31     this.observes[this.observes.length] = obj;
32 }
33
34 sel.detach = function(obj) {
35     for(var i=0; i<this.observes.length; i+=1) {
36         if(this.observes[i] === obj) {
37             delete this.observes[i];
38         }
39     }
40 }
41
42 sel.onchange = sel.notify = function() {
43     for(var i=0; i<this.observes.length; i+=1) {
44         this.observes[i].update(this);
45     }
46 }
47
48
49 var test2 = document.getElementById('test2');
50 var test3 = document.getElementById('test3');
51 test2.update =  function (sel) {
52     if(sel.value == '1') {
53         this.innerHTML = '足球新闻';
54     } else if (sel.value == '0') {
55         this.innerHTML = '宋明星来了';
56     }
57 }
58
59 test3.update =  function (sel) {
60     if(sel.value == '1') {
61         this.innerHTML = '大众汽车';
62     } else if (sel.value == '0') {
63         this.innerHTML = '化妆品好好好';
64     }
65 }
66
67
68 sel.attach(test2);
69 sel.attach(test3);
70
71
72 function drop() {
73     sel.detach(test3);
74 }
75
76 </script>
77 </html>

没加监听者模式的选择后改变的代码

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="keyword" content="布尔教育">
 6     <title>Document</title>
 7 </head>
 8 <style>
 9 div {10     width: 80%;
11     height: 200px;
12     border: 1px solid blue;
13     margin: 10px;
14 }
15 </style>
16 <body>
17     <select name="sel" id="sel">
18     <option value="0">女式风格</option>
19     <option value="1">男式风格</option>
20     </select>
21     <div id="test1">1</div>
22     <div id="test2">新闻</div>
23     <div id="test3">广告</div>
24 </body>
25 <script>
26 var sel = document.getElementById('sel');
27 sel.onchange = function() {
28     if( this.value == '1' ) {
29         document.getElementById('test2').innerHTML = '足球新闻';
30         document.getElementById('test3').innerHTML = '大众汽车';
31     } else if(this.value == '0') {
32         document.getElementById('test2').innerHTML = '宋重鸡来华';
33         document.getElementById('test3').innerHTML = '化妆品';
34     }
35 }
36 </script>
37 </html>

View Code

转载于:https://www.cnblogs.com/Renyi-Fan/p/9417217.html

php设计模式课程---4、观察者模式的好处是什么相关推荐

  1. 北风设计模式课程---观察者模式

    北风设计模式课程---观察者模式 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 1.观察者模式注意点? 1.观察者模式的别名发布-订阅(Publish/S ...

  2. 北风设计模式课程---2、工厂方法模式

    北风设计模式课程---2.工厂方法模式 一.总结 一句话总结: 工厂方法模式相对于简单工厂模式只是修改了 [工厂核心类-将它变成接口],具体的创建产品的工作交给[工厂核心类的子类] 满足了开闭原则:不 ...

  3. 北风设计模式课程---创建模式、结构模式、行为模式的区别

    北风设计模式课程---创建模式.结构模式.行为模式的区别 一.总结 一句话总结: 创建模式:[关注对象的创建]:创建型模式,就是创建对象的模式,抽象了实例化的过程. 结构模式:结构型模式是为解决[怎样 ...

  4. 设计模式 ( 十六 ) 观察者模式Observer(对象行为型)

    设计模式 ( 十五 ) 观察者模式Observer(对象行为型) 1.概述 一些面向对象的编程方式,提供了一种构建对象间复杂网络互连的能力.当对象们连接在一起时,它们就可以相互提供服务和信息. 通常来 ...

  5. 北风设计模式课程---单一职责原则

    北风设计模式课程---单一职责原则 一.总结 一句话总结: 视频教程网上一定能找到做好笔记的博客,很大几率都不需要自己做笔记.比如北风设计模式课程,https://www.cnblogs.com/xi ...

  6. 北风设计模式课程---深入理解[代理模式]原理与技术

    北风设计模式课程---深入理解[代理模式]原理与技术 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 设计模式都是对生活的抽象,比如用户获得装备,我可以先装 ...

  7. 北风设计模式课程---7、建造者模式

    北风设计模式课程---7.建造者模式 一.总结 一句话总结: 设计模式都是对生活中好的做事方法的一些抽象,使得各司其职,减少出错. 建造者模式可以看做模仿的生活中:设计师,施工队做复杂房子交给客户的场 ...

  8. 北风设计模式课程---13、享元模式

    北风设计模式课程---13.享元模式 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 1.享元模式的核心是什么? 对象插入到一个池子里面去,如果池子里面没有 ...

  9. 北风设计模式课程---享元模式

    北风设计模式课程---享元模式 一.总结 一句话总结: 不仅要通过视频学,还要看别的博客里面的介绍,搜讲解,搜作用,搜实例 1.享元模式的本质是什么? 池技术:各种缓存池都是享元模式的体现 说到享元模 ...

最新文章

  1. Python使用matplotlib函数subplot可视化多个不同颜色的折线图、在折线图上为每个数据点添加日期数据标签
  2. 如何写一个通用的README规范
  3. 提高你的Java代码质量吧:如果有必要,使用变长数组吧
  4. Python正则简单实例分析
  5. Python爬虫学习笔记(三)——正则表达式
  6. QT的QFormBuilder类的使用
  7. [PHP] 近期接手現有的企邮前端框架业务所遇困难
  8. [Qt教程] 第19篇 2D绘图(九)图形视图框架(上)
  9. workman php教程_workerman搭建websocket入门教程,简单实用
  10. 《魔鸟》:上帝可以宽恕,魔鬼却一个都不放过
  11. 有序数组中查找第一个比target大的数
  12. Linux 监控命令 iostat
  13. 电子科大计算机调试,电子科大计算机学院 汇编语言程序设计 实验报告 99分精品版.doc...
  14. 用组织分析框架分析阿里巴巴集团
  15. js 区分中英文输入法(如中英文括号)
  16. sigmoid函数导数的硬件实现(verilog)
  17. 张栋_机器学习的照片 - 微相册
  18. 什么样的耳机戴着舒服些、最好用的的几款骨传导蓝牙耳机推荐
  19. 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
  20. [转载] 怎样应对一般的面试---Star 法则 - towerman

热门文章

  1. npm audit fix
  2. ansible安装使用入门
  3. 安装了多个php版本,如何编译扩展
  4. javascript常用tool.js
  5. [置顶] VS自带工具:dumpbin的使用
  6. WCF并发连接数的问题
  7. 【Linux】预编译,编译,汇编,链接的四过程
  8. 在线火星文转简体中文工具
  9. 在线文本转2-36任意进制工具
  10. linux中同时移动多种格式文件