扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
属于行为型模式
交城ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!定义关系Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
—— Gof《Design Patterns: Elements of Reusable Object-Oriented Software》
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
—Gof《设计模式:可复用面向对象软件的基础》
依赖关系在观察者模式的重要程度,还体现在,观察者设计模式还有另外一个别名(观察者模式有好几个名字,我们后面都会提到),就叫“Dependents”
依赖依赖关系,最重要的是搞清楚,谁是依赖方,谁是被依赖方,在没有解耦合的依赖关系中,依赖方不能独立存在,被依赖方则反之。
所有研究依赖关系的设计模式,宗旨都包括解耦合依赖双方,干掉依赖关系,或者降低依赖度。从面向对象的角度看,对象和对象之间,一个对象调用了另外一个对象的方法,或者访问了另外对象的属性,这两个对象之间就存在依赖关系。
怎么样的依赖关系?
再给依赖关系加个定语,“一对多”的依赖关系
什么是“一对多”我就不多说了,这里面要强调的,就是一对多里面的“一”,往往是被依赖方,“多”则是依赖方。
谁的变化?对象状态的变化,也就是对象属性的变化。
被依赖方对象状态的变化,变化的后果呢,就是所有依赖于它的对象,都会得到通知,并自动更新。
总结一下,观察者模式,就是定义对象之间的依赖关系,当被依赖方(也就是“一”方)状态发生变化时,所有依赖方(也就是“多”方),都会得到通知并被自动更新。
这个定义后面几个字“并被自动更新”,不太严谨,依赖方都会得到通知一般情况下是没问题的,但是,*是否被自动更新就不得而知了,是否需要处理这个通知,这个要看依赖方的业务需求。
观察者模式就是’一’更新了,依赖’一’的’多’就要去更新。
我们以前写代码就是硬编码,有几个服务层去处理请求,我们就调几个方法去处理请求。而有了观察者模式之后我们就可以讲处理方法(服务层)放到一个集合里面,去遍历集合里面的元素去处理请求,从而降低依赖关系,做到解耦,看起来整洁清晰。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流