js实现观察者模式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>面向对象之观察者模式</title>
</head>
<style type="text/css">
.word{
width:500px;
height: 150px;
border:1px solid #333;
margin-top:20px;
} </style>
<body>
<h1>用观察者模式来切换</h1>
<select name="" id="">
<option value="default">默认风格</option>
<option value="male">男士风格</option>
<option value="female">女士风格</option>
</select>
<input type="button" name="" value="观察动作栏" onclick="t1();">
<input type="button" name="" value="不观察动作栏" onclick="t2();">
<div class="word" id="content">内容</div>
<div class="word" id="ad">广告</div>
<div class="word" id="study">动作</div>
</body>
<script type="text/javascript">
var sel =document.getElementsByTagName('select')[0];
sel.observers={};
sel.attach=function(key,obj){
this.observers[key]=obj;
}
sel.detach=function(key){
delete this.observers[key];
}
//追踪监听
sel.onchange=sel.notify=function(){
for(var key in this.observers){
this.observers[key].update(this);
}
}
//客户端
var content= document.getElementById('content');
content.update=function(observee){
if(observee.value=='male'){
this.style.backgroundColor='gray';
}else if(observee.value=='female'){
this.style.backgroundColor='pink';
}
}
var ad= document.getElementById('ad');
ad.update=function(observee){
if(observee.value=='male'){
this.innerHTML='汽车';
}else if(observee.value=='female'){
this.innerHTML='化妆品';
}
}
//让content观察select的变化
sel.attach('content',content);
sel.attach('ad',ad);
//耦合度低
var study=document.getElementById('study');
study.update=function(observee){
if(observee.value=='male'){
this.innerHTML='学习计算机';
}else if(observee.value=='female'){
this.innerHTML='学习美容';
}
}
sel.attach('study',study); function t1(){
sel.attach('study',study);
}
function t2(){
sel.detach('study');
} </script>
</html>
js实现观察者模式的更多相关文章
- js设计模式-观察者模式
定义: 观察者模式又叫发布订阅模式,它定义了对象间的一种一对多的依赖关系.观察者模式让两个对象松耦合地联系在一起,虽然不太清楚彼此的细节,但这不影响他们之间的互相通信. 思路 定义一个对象,在对象中实 ...
- 谈谈JS的观察者模式(自定义事件)
呼呼...前不久参加了一个笔试,里面有一到JS编程题,当时看着题目就蒙圈...后来研究了一下,原来就是所谓的观察者模式.就记下来...^_^ 题目 [附加题] 请实现下面的自定义事件 Event 对象 ...
- JS设计模式——观察者模式(通俗易懂)
Observer模式的概念 Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态. Observer模式提供给关联对象一种同步通信的手段 ...
- js 设计模式——观察者模式
观察者模式 定义 观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状 ...
- js 之观察者模式
观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自 ...
- 我理解的 js 的观察者模式 Observable
我第一次看 四人帮 写的<设计模式>时一头雾水,现在也是,或许其是针对专业的程序员学习使用的. 通过对Ext / Backbone 源码的学习,可总结如下: 模式 - 就是对解决某一类特定 ...
- js的观察者模式
观察者模式(发布-订阅模式):它定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知.由主体和观察者组成,主体负责发布事件,同时观察者通过订阅这些事件来观察该主体 ...
- js之观察者模式
观察者模式: 大体上是, 1.松耦合的代码: 2.一对多的关系: 3.主体状态变化时,所有依赖被通知: 4.主体和观察者互不知晓. 基本上,满足上面四点的,就可以算是观察者模式了.来看一个demo, ...
- js实现观察者模式风格替换
如下图,我们看到两种风格:在选择男士时,页面颜色为黑色:在选择女士时,页面颜色为粉红色. 主要可以分为两类: 下拉框 ---> 被观察者 div ---> 观察者 面向过程实现风格替换: ...
随机推荐
- JS实时定位
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
- C语言创始人
丹尼斯·麦卡利斯泰尔·里奇(英语:Dennis MacAlistair Ritchie,1941年9月9日-2011年10月12日[3]),生于美国纽约州布朗克斯维尔(Bronxville),著名的美 ...
- CSS书写规范及顺序
CSS书写顺序 1.位置属性(position, top, right, z-index, display, float等)2.大小(width, height, padding, margin)3. ...
- Html一天入门
一.什么是HTML 1.html: HyperText Markup Language 超文本标记语言,是最基础的网页语言,而且都是由标签组成. 2.基本格式: <html> <he ...
- ajax请求web服务返回json格式
由于.net frameword3.5以上添加了对contenttype的检查,当ajax发送请求时,如果设置了contenttype为json,那么请求webservice时,会自动将返回的内容转为 ...
- c# 获取iis地址
using System;using System.Collections.Generic;using System.DirectoryServices;using System.Linq;using ...
- OPRNGL总结(一)OPENGL的理论原理
1.计算机图形学的发展——走向3D 1.纸带 2.荧光屏,打印出*等等 3.阴极射线管 4实时3D 2.实现“3D”的原理 1.其实现在看到的3D都是伪3D,并不是真正的三维图像,真正的三维图像 真3 ...
- Leetcode 375. Guess Number Higher or Lower II
We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...
- java 基础拾漏
1.java语言支持的类型非为两类:基础类型(primitive Type) 和引用类型(Reference Type),基础类型8种 2.数组元素的类型是基本类型中的整数类型(byte,short, ...
- squid安装配置
Squid做反向代理(192.168.1.69) squid.conf http_port 80 vhost vport visible_hostname pdd2.matrixcdn.net cac ...