《从Java类库看设计模式》.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《从Java类库看设计模式》.pdf

从Java 类库看设计模式(1) 刘武东 (wdliu@), 简介: 在这一部分的内容中,介绍的是一个相对简单但功能强大的模式: 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 模式的类图 在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 应该在这个方法中调用Subject 的getXXX()方法来 取得 最新的状态,而实际上,你可以只是在其中对Subject 的某些事件进行响应。这 便是Java 中的代理事件模型的一个雏形--对事件进行响应。只不 过,在 Observer 模式中将事件特定化为某

文档评论(0)

wyth + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档