概述在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合...
分类:
Web程序 时间:
2015-08-02 19:57:54
阅读次数:
114
Java使得以模块化构建复杂应用系统成为可能,它为Applet而来,但为组件化而留。 Spring是一个开源的框架,最早由Rod Johnson创建。Spring是为了解决企业级应用开发的复杂性而创建的,但Spring又不仅仅局限于服务器端开发,任何Java应用都能在简单性、可测试性和松耦合性等方面...
分类:
编程语言 时间:
2015-07-31 12:04:30
阅读次数:
142
SplSubject 和 SplObserver 接口Observer 设计模式定义了对象间的一种一对多的依赖关系,当被观察的对象发生改变时,所有依赖于它的对象都会得到通知并被自动更新,而且被观察的对象和观察者之间是松耦合的。在该模式中,有目标(Subject)和观察者(Observer)两种角色。...
分类:
其他好文 时间:
2015-07-29 00:39:17
阅读次数:
161
定义:观察者模式定义了对象之间的一对多依赖。当“主题”(Object)状态改变事,所有依赖它的“观察者”(Observer)都会受到通知并自动更新。主题支持观察者订阅和退订。观察者模式提供了一种对象设计,让主题和观察者之间松耦合。改变主题或观察者一方不会影响另一方。因为两者是松耦合的。参考:设计模式...
分类:
其他好文 时间:
2015-07-27 14:55:44
阅读次数:
100
迭代器模式定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象。
迭代器分内部迭代器和外部迭代器,内部迭代器与对象耦合紧密,不推荐使用。外部迭代器与聚合容器的内部对象松耦合,推荐使用。
迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集 合内部的数据。而且,可以同时
定义多个迭代器来遍历,互不冲突...
分类:
编程语言 时间:
2015-07-21 17:12:18
阅读次数:
171
在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern)。
在OOP中,一切都是对象,将请求封装成对象,符合OOP的设计思想,当将客户的单...
分类:
编程语言 时间:
2015-07-20 13:06:26
阅读次数:
204
集群(Cluster)所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。负载均衡(Load Balance)网络的负载均衡是一种动态均衡技术,通过一些工具实时地分析数据包,掌握网络中的数据流量...
分类:
其他好文 时间:
2015-07-20 12:50:19
阅读次数:
96
桥接模式属于结构型设计模式。
设计意图:将抽象部分与实现部分分离,使它们都可以独立的变化。
一看到设计意图,大家可能有些发懵,我们看到的继承和接口不都是抽象和实现分离的吗?尤其是接口和抽象类都是这样的实现啊!那怎么还有这么个桥接的分离呢?
我们先来看个例子。
例如:汽车品牌内置导航仪,我们希望实现,每个品牌的导航仪都可以在任何一个牌子的汽车上安装并启动。
汽车品牌有两个:宝马、奔驰。...
分类:
其他好文 时间:
2015-07-15 01:21:58
阅读次数:
188
有这么一种松耦合的需求:
有一些类的对象对类A对象的状态变化很感兴趣,不会改变类A的对象,也不会被类A的对象改变,想以一种较小的代价观察对类A对象状态变化。
下面的几种方式也能实现上述目的
(1)通过类的继承来共同管理和维护一些感兴趣的数据或者状态,但是耦合度大,不易扩展和维护。
(2)通过调用被观察者的getter方法获取数据,这个还是直接的对象调用。
上述两种方法将使观察者和被观察对...
分类:
其他好文 时间:
2015-07-14 17:57:27
阅读次数:
115
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/07/success-of-microservices近年来,在软件开发领域关于微服务的讨论呈现出火爆的局面,有人倾向于在系统设计与开发中采用微服务方式实现软件系统的松耦合、跨部门开发;同时,反对之声也很强烈,持反对观点的人表示微服务增加了系统维护、部署的难度,导致一些功能模块...
分类:
其他好文 时间:
2015-07-12 07:19:17
阅读次数:
175