观察者实例

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>

<body>
<script type="text/javascript">
var ObserverObj = {  /*依赖对象*/
    FirstName: "J",
    LastName: "Q",
    Id: 1
}

var ObserverManager = { /*观察器*/
    Observers:[], /*观察对象集*/
    AddObserver: function(item){/*加入观察对象*/
        this.Observers.push(item);
    },
    Change: function(obj){  /*改变对象行为*/
        for(var item in obj){
            ObserverObj[item] = obj[item];
        }//改变数据依赖对象数据
        for(var i = 0,len = this.Observers.length; i < len; i++){
            var item = this.Observers[i];
            item.Display();        //对象改变后,改变观察对象的行为Display; 为统一的接口
        }
    }
}

var Header = function(){    /*观察对象Header*/
    this.Display = function(){
        alert(ObserverObj.FirstName);
    }
}

var Content = function(){    /*观察对象Content*/
    this.Display = function(){
        alert(ObserverObj.LastName);
    }
}

var Foot = function(){    /*观察对象Foot*/
    this.Display = function(){
        alert(ObserverObj.Id);
    }
}

/*绑定观察器动作*/
ObserverManager.AddObserver(new Header());
ObserverManager.AddObserver(new Content());
ObserverManager.AddObserver(new Foot());
</script>
<!--使用方法-->
<a href="javascript://" onclick="ObserverManager.Change({FirstName:‘江‘});">改变FirstName</a>
<a href="javascript://" onclick="ObserverManager.Change({LastName:‘琪‘});">改变LastName</a>
<a href="javascript://" onclick="ObserverManager.Change({Id:2});">改变Id</a>

</body>
</html>

观察者实例

时间: 2024-11-09 01:54:54

观察者实例的相关文章

转载iOS---&gt;NSRunLoop详解

转载--->NSRunLoop(详解) NSRunLoop大部分情况在多线程编程的时候才会用到..但是一般不会用NSRunLoop,因为它不是线程安全的.一般都建议用CFRunLoop,这个是线程安全的.input source and port-based custom source这些操作,是向线程里面添加操作的.添加的这些操作,会在该线程执行空间的调度下执行. 通俗的理解就是如果你创建的了一个子线程,子线程的运行函数如下- (void) subThread (void*)unused { 

android里的观察者模式

状况:遇到android程序中后入栈的一个Activity需要更新之前一个或者两个以上Activity中的数据时使用 [1].[代码] [Java]代码 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58

java设计优化--观察者模式

观察者模式介绍 观察者模式是一种非常有用的设计模式,在软件系统中,当一个对象的行为依赖于另一个对象的状态时,观察者模式就非常有用.如果不适用观察者模式,而实现类似的功能,可能就需要另外启动一个线程不停地监听另一个对象的状态,这样会得不偿失.如果在一个复杂的系统中,可能就需要开启很多的线程来监听对象状态的变化,这样会使系统的性能产生额外的负担.而观察者模式就可以在单线程下使某一对象及时得知所依赖对象状态的变化而做出行为. 观察者模式的经典结构: 其中ISubject是观察对象(被观察者对象),它维

大话设计模式C++实现-第14章-观察者模式

一.UML图 关键词:Subject维护一个Observer列表.Subject运行Notify()时就运行列表中的每一个Observer的Update(). 二.概念 观察者模式:定义了一种一对多的依赖关系.让多个观察者对象同一时候监听某一主题对象. 这个主题对象在状态发生变化时,会通知全部观察者对象,使他们可以自己主动更新自己. 三.说明 角色: (1)Subject类:能够翻译为主题或者抽象通知者,一般用一个抽象类或者一个接口实现.他把全部对观察者对象的引用保存在一个聚集里,每一个主题都能

用最简单的例子理解观察者模式(Observer Pattern)

假设有一个软件公司,每当有新产品推出,就把信息通知到一些客户. 把通知这个动作抽象成一个接口. public interface IService { void Notif(); } 客户如果想获得通知,就需要实现以上的接口.这里的客户被看作是观察者. public class CustomerA : IService { public void Notif() { Console.WriteLine("客户A收到通知了~~"); } } public class CustomerB

从Vue.js源码角度再看数据绑定

## 写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出.文章的原地址:[https://github.com/answershuto/learnVue](https://github.com/answershuto/learnVue).在学习过程中,为Vue加上了中文的注释[https://github.com/answershuto/learnVue/tree/master/vue-src](http

七. PHP模式设计----运行及描写叙述任务

1. 解析器模式 //解析器内容类 //用于存放表达式的运算结果,并且能依据传入的表达式返回当初记录的结果 class InterpreterContext{ private $expressionstore=array(); //将对象放进array里面,索引號是对象ID号 function replace(Expression $exp,$value){ $this->expressionstore[$exp->getKey()]=$value; } function lookup(Exp

rxjs简单入门

rxjs全名Reactive Extensions for JavaScript,Javascript的响应式扩展, 响应式的思路是把随时间不断变化的数据.状态.事件等等转成可被观察的序列(Observable Sequence),然后订阅序列中那些Observable对象的变化,一旦变化,就会执行事先安排好的各种转换和操作 rxjs适用于异步场景,即前端交互中接口请求.浏览器事件以及自定义事件.通过使用rxjs带给我们前所未有的开发体验. 统一异步编程的规范,不管是Promise.ajax还是

Java 设计模式之观察者模式

观察者模式介绍: 观察者模式(Observer)完美的将观察者和被观察的对象分离开.举个例子,用户界面可以作为一个观察者,业务数据是被观察者,用户界面观察业务数据的变化,发现数据变化后,就显示在界面上.面向对象设计的一个原则是:系统中的每个类将重点放在某一个功能上,而不是其他方面.一个对象只做一件事情,并且将他做好.观察者模式在模块之间划定了清晰的界限,提高了应用程序的可维护性和重用性. 观察者设计模式定义了对象间的一种一对多的依赖关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知