快速业务通道

从Java类库看设计模式(1) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

从Java类库看设计模式(1)

时间:2011-04-23 IBM 刘武东

在这一部分的内容中,介绍的是一个相对简单但功能强大的模式:Observer模式。希望通 过这部分地叙述,大家看了之后,能够对设计模式有一个比较全面地,感性的认识。

很多时候,对于一个设计来说(软件上的,建筑上的,或者它他工业上的),经验是至关 重要的。好的经验给我们以指导,并节约我们的时间;坏的经验则给我们以借鉴,可以减少 失败的风险。然而,从知识层面上来讲,经验只是作为一种工作的积累而存在于个人的大脑 中的,很难被传授或者记录。为了解决这样的问题,人们提出了所谓的模式的概念。所谓模 式,是指在一个特定背景下,反复出现的问题解决方案。模式是经验的文档化。

软件模式的概念现在比较的广泛,涉及到分析,设计,体系结构,编码,测试,重构等软 件构造生命期中的各个部分。这儿主要讨论的是设计模式,指的是在软件设计过程中反复出 现的一些问题的解决方法了。不过我们一般在提到设计模式的时候,一般都是指GOF的经典书 《Design Pattern--Elements of Reusable Object-Oriented Software》出现的23个模式, 因而,它是具体的针对于面向对象软件设计过程的。

从全局上看来,模式代表了一种语言,一种被文档化的经验,甚至是一种文化。往往很多 不方便描叙,或者描叙起来很复杂的问题,用模式语言来叙说,会让听者产生心领神会的感 觉。当然,这需要交流双方都能够很好地把握模式语言的含义。然而,这并不是一件容易的 事情。模式在各个人的理解上往往存在差异,这篇文章旨在从一个具体的应用角度:Java类 库,来阐叙设计模式。并结合具体的例子,希望能够加深大家对设计模式的理解。

这儿说的Java类库,其实并没有局限于JDK本身,还包括了一些其他的类库中的例子,比 如JAXP等(当然,下一个版本的JDK中也会包含JAXP了)。其实设计模式的思想现在应用的如 此广泛,无论在什么样的设计中,只要稍微大一点的设计,都可以找到很多很多设计模式的 踪迹,或者说都不可避免的用到设计模式。下面所讲的设计模式,大部分都是GOF的那部经典 中出现过的23个模式,然而,还有一些,比如MVC,并不属于那里。一般的来讲,我们认为 GOF的23个模式是一些中级的模式,在它下面还可以抽象出一些更为一般的低层的模式,在其 上也可以通过组合来得到一些高级的模式。当然,这儿的低中高的区别,如同区别不同的语 言一样,并没有优劣之分,仅仅是在应用层面上的区别。

Observer模式

Observer模式的功用,是希望两个(或多个)对象,我们称之为Subject和Observer,当 一方的状态发生改变的时候,另一方能够得到通知。也就是说,作为Observer的一方,能够 监视到Subject的某个特定的状态变化,并为之做出反应。一个简单的例子就是:当一个用户 视图中的数据被用户改变后,后端的数据库能够得到更新,而当数据库被其他方式更新后, 用户视图中的数据显示也会随之改变。

图一:Obverser模式的类图

从Java类库看设计模式(1) - 编程入门网

从Java类库看设计模式(1)(2)

时间:2011-04-23 IBM 刘武东

在JDK中实际上有一个对Observer模式的简单的实现:就是类java.util.Observerable和 接口java.util.Observer。java.util.Observerable类对应于Subject,而 java.util.Observer就是观察者了。JDK中并没有把这两个部分都设计为接口,而是让类 java.util.Observerable提供了部分的实现,简化了许多编程的工作。当然,这也减少了一 定的灵活性。

下面列出了Observer和Observeral的函数列表,及其简单的功能说明

java.util.Observer:

public void update(Observable obs, Object obj)

java.util.Observer 接口很简单,只定义了这一个方法,狭义的按照Observer模式的说 法,Observer应该

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号