刘伟技术博客

专注软件架构、设计模式、重构、UML和OOAD!

MVC已死?是时候用MOVE了

参考资料:MVC is dead, it's time to MOVE on. http://cirw.in/blog/time-to-move-on       作者:Conrad Irwin — June 2012      MVC模式是一个很了不起的主意,它广泛应用于编程实践中。“数据模型(...

2012-07-29 02:17:16

阅读数:8799

评论数:1

外观模式及其改进(三):外观类的单例化

由于外观类维持了对多个子系统类的引用,外观对象在系统运行时将占用较多的系统资源,因此需要对外观对象的数量进行限制,避免系统资源的浪费。可以结合单例模式对外观类进行改进,将外观类设计为一个单例类。通过对外观模式单例化,可以确保系统中只有唯一一个访问子系统的入口,降低系统资源的消耗。单例化之后的外观模...

2012-07-29 01:43:17

阅读数:4120

评论数:5

外观模式及其改进(二):抽象外观类的引入

在通用的外观模式结构图中,如果需要增加、删除或更换与外观类交互的子系统类,必须修改外观类或客户端的源代码,这将违背开闭原则,因此我们可以通过引入抽象外观类来对系统进行改进,在一定程度上解决该问题。在引入抽象外观类之后,客户端可以针对抽象外观类进行编程,对于新的业务需求,不需要修改原有外观类,而对应...

2012-07-29 00:26:02

阅读数:4020

评论数:3

外观模式及其改进(一):外观模式概述

外观模式是使用频率最高的结构型设计模式之一,无论是在Web应用软件或是桌面应用软件,还是在移动应用软件中,外观模式都得到了广泛的应用。      外观模式要求外部与一个子系统的通信可以通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的入口,它定义了一个高层接口,这个接口使得相关子系统更...

2012-07-29 00:03:52

阅读数:3813

评论数:3

甘特图版2012年伦敦奥运会赛程表

7月27日,2012年伦敦奥运会就要隆重举行了,工作之余,偶做了个甘特图版2012年伦敦奥运会赛程表,以飨观众,。2012年伦敦奥运会赛程表项目/日期7.25周三7.26周四7.27周五7.28周六7.29周日7.30周一7.31周二8.1周三8.2周四8.3周五8.4周六8.5周日8.6周一8....

2012-07-26 00:09:45

阅读数:5314

评论数:1

设计模式真的能改善软件质量吗?(二)

接前一篇文章: “设计模式真的能改善软件质量吗?(一)”结果分析      选取三个知名的设计模式:组合模式、抽象工厂模式、享元模式     (1)  组合模式         结论:组合模式对大部分质量属性都有正影响,可伸缩性(Scalability)和健壮性(Robustness)除外。   ...

2012-07-25 00:16:07

阅读数:15250

评论数:43

设计模式真的能改善软件质量吗?(一)

本文是加拿大蒙特利尔大学(University of Montreal)Foutse Khomh和Yann-Gaël Guéhéneuc开展的一项经验性软件研究的成果,他们已在此基础上发表了相关论文。      为了让国内开发人员也能够了解这项研究并能够参与其中,我将几篇相关论文的核心部分翻译并整...

2012-07-24 23:05:01

阅读数:10883

评论数:31

从研究的角度来思考软件设计模式——研究方向

近期在做一些关于软件设计模式的研究工作,通过广泛的收集与阅读,细致的分析与整理,现将设计模式的几个主要研究方向罗列如下: (1) 设计模式的可视化研究(Visualization)       如何在复杂的系统结构(UML图、源代码等)中将设计模式实例标注出来,包括模式的标注和模式角色的标注。研究...

2012-07-24 21:23:59

阅读数:4262

评论数:0

对象间的联动——观察者模式(六)

22.6 观察者模式与MVC       在当前流行的MVC(Model-View-Controller)架构中也应用了观察者模式,MVC是一种架构模式,它包含三个角色:模型(Model),视图(View)和控制器(Controller)。其中模型可对应于观察者模式中的观察目标,而视图对应于观察...

2012-07-06 00:15:45

阅读数:10417

评论数:11

对象间的联动——观察者模式(五)

22.5 观察者模式与Java事件处理        JDK 1.0及更早版本的事件模型基于职责链模式,但是这种模型不适用于复杂的系统,因此在JDK 1.1及以后的各个版本中,事件处理模型采用基于观察者模式的委派事件模型(DelegationEvent Model, DEM),即一个Java...

2012-07-06 00:09:05

阅读数:8833

评论数:7

对象间的联动——观察者模式(四)

22.4 JDK对观察者模式的支持       观察者模式在Java语言中的地位非常重要。在JDK的java.util包中,提供了Observable类以及Observer接口,它们构成了JDK对观察者模式的支持。如图22-5所示: 图22-5 JDK提供的Observable类及Obse...

2012-07-06 00:02:15

阅读数:9056

评论数:5

对象间的联动——观察者模式(三)

23.3 完整解决方案       为了实现对象之间的联动,Sunny软件公司开发人员决定使用观察者模式来进行多人联机对战游戏的设计,其基本结构如图22-4所示: 图22-4  多人联机对战游戏结构图       在图22-4中,AllyControlCenter充当目标类,Conc...

2012-07-05 23:53:01

阅读数:10847

评论数:20

对象间的联动——观察者模式(二)

22.2  观察者模式概述       观察者模式是使用频率最高的设计模式之一,它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察...

2012-07-05 23:34:09

阅读数:13706

评论数:10

对象间的联动——观察者模式(一)

观察者模式是设计模式中的“超级模式”,其应用随处可见,在之后几篇文章里,我将向大家详细介绍观察者模式。         “红灯停,绿灯行”,在日常生活中,交通信号灯装点着我们的城市,指挥着日益拥挤的城市交通。当红灯亮起,来往的汽车将停止;而绿灯亮起,汽车可以继续前行。在这个过程中,交通信号灯是...

2012-07-05 23:03:41

阅读数:13681

评论数:14

数学表达式解析器简介

在实际项目开发中如果需要解析数学公式,无须再运用解释器模式进行设计,可以直接使用一些第三方解析工具包,它们可以统称为数学表达式解析器(Math Expression Parser, MEP),如Expression4J、Jep、JbcParser、Symja、Math Expression S...

2012-07-04 00:32:47

阅读数:9636

评论数:2

自定义语言的实现——解释器模式(六)

18.6 解释器模式总结       解释器模式为自定义语言的设计和实现提供了一种解决方案,它用于定义一组文法规则并通过这组文法规则来解释语言中的句子。虽然解释器模式的使用频率不是特别高,但是它在正则表达式、XML文档解释等领域还是得到了广泛使用。与解释器模式类似,目前还诞生了很多基于抽象语法树...

2012-07-04 00:23:37

阅读数:6519

评论数:11

自定义语言的实现——解释器模式(五)

18.5 再谈Context的作用        在解释器模式中,环境类Context用于存储解释器之外的一些全局信息,它通常作为参数被传递到所有表达式的解释方法interpret()中,可以在Context对象中存储和访问表达式解释器的状态,向表达式解释器提供一些全局的、公共的数据,此外还可以...

2012-07-04 00:13:57

阅读数:6698

评论数:4

自定义语言的实现——解释器模式(四)

18.4 完整解决方案       为了能够解释机器人控制指令,Sunny软件公司开发人员使用解释器模式来设计和实现机器人控制程序。针对五条文法规则,分别提供五个类来实现,其中终结符表达式direction、action和distance对应DirectionNode类、ActionNode类和...

2012-07-04 00:06:48

阅读数:7571

评论数:9

自定义语言的实现——解释器模式(三)

18.3 解释器模式概述        解释器模式是一种使用频率相对较低但学习难度较大的设计模式,它用于描述如何使用面向对象语言构成一个简单的语言解释器。在某些情况下,为了更好地描述某一些特定类型的问题,我们可以创建一种新的语言,这种语言拥有自己的表达式和结构,即文法规则,这些问题的实例将对应为...

2012-07-04 00:00:38

阅读数:7843

评论数:4

自定义语言的实现——解释器模式(二)

18.2 文法规则和抽象语法树        解释器模式描述了如何为简单的语言定义一个文法,如何在该语言中表示一个句子,以及如何解释这些句子。在正式分析解释器模式结构之前,我们先来学习如何表示一个语言的文法规则以及如何构造一棵抽象语法树。        在前面所提到的加法/减法解释器中,每一个...

2012-07-03 23:54:23

阅读数:7953

评论数:1

提示
确定要删除当前文章?
取消 删除
关闭
关闭