设计模式研究2.1什么是设计模式 设计模式的思想最初来源于建筑领域,建筑师Christopher Alexander首先提出了设计模式的概念.他认为:每一种模式描述一个经常出现的问题和这个问题的相应解决方案,这个解决方案可以反复使用,而无需每一次重新设计,他的这一思想虽指的是城市建筑规则中的设计模式,但同样适用于软件工程领域。
特别是在面向对象技术出现之后,越来越多的学者、专家和工程师研究新的模式并且在实践中使用它. 设计模式在软件业中的出现始于1987年。
那时,Ward Cunningham和Kent Beck在一起用Smalltalk设计用户界面。
他们决定使用Alexander的理论发展出一种有五个模式的语言来指导Smalltalk新手,为此他们写成了一篇(Using PaRentsLanguages for Object Oriented Programs}的论文。
1995年,Gamma、Helm、Johnson和Vlissides四人(GOF)合著的’DeSi册Patterns:Elements of ReusableObject.Oriented software’(中文名:设计模式:可复用面向对象软件的基础)一书发表,成为了设计模式方面的经典著作。
该书促进了模式概念在软件业的普及,同时带动了对模式的研究和应用
软件设计模式关注的是特定
设计问题及其解决
方案。
在每种模式中均描述一个设计
问题和一个经过验证的、通用的解决方案,这个解决方案是对反复出现的设计结构进行识别和抽象得到的,它通常由多个类组成。
这些模式可以被重用,有良好的伸缩性,而这些设计模式的优势将在基于J2EE的应用中得到极佳的体现。
设计模式的核心思想;面向接口(抽象)编程,“分派”使用与实现,继而可以“封装”实现,简化使用。
设计模式运用原则:类的设计要遵循松耦合(要进行复用的类尽量减少与其他类的依存程度)、强聚合(该类应该包含与该类任务密切相关的完整的方法集)的原则,以增强灵活性,增加复用的可能性;尽可能使“使用”傻瓜化。
使用设计模式可以为软件
系统的设计带来很多好处: 1.设计模式为开发者提供了一个很好的设计经验,模式中所描述的解决方案是人们从不同角度对一个问题进行研究,然后得出来最通用、最灵活的解决方 3天津大学硕士学位论文 第二章设计模式研究案,其有效性是经过大量实践检验的。
2.设计模式为软件重用提供了一条途径。
每个设计模式都可以是软件设计中的可重用元素或单元。
多个模式可以组合起来构成完整的系统。
这种基于模式的设计具有更大的灵活性、可扩展性和更好的可重用性。
3.设计模式的基本思想是将程序中的可变部分与不变部分进行分离,尽量减少对象之间的耦合度,从而某一个对象的修改,不会导致其它对象的变动,使得由于修改而带来的影响范围达到最小化. 按照GOF的分类方法,共包含23个模式。
根据目的的不同,将它们分为: ●创建型(Creational):解决如何创建对象的问题。
●结构型(Structural):解决如何正确的组合类或对象的问题。
●行为型(Behavioral):解决类或对象之间如何交互和如何分配职责的问题。
2.2典型设计模式分析 下面结合实例,分别详细的讨论本人项目中用到的几种重要的设计模式。
2.2.1简单工厂模式(Simple Factory) 简单工厂模式属于创建型(Creational)模式,它根据提供给它的数据,返回几个可能类中的一个类的实例.通常它返回的类都有一个共同的父类和共同的方法,但每个方法执行的认为不同,而且根据不同的数据进行了优化.它主要有三种角色: 1.抽象产品(Product)角色:担任这个角色的类是工厂方法模式所创建的对象的父类,或它们共同拥有的接口。
抽象产品角色可以用一个接口或者抽象类实现,如: IShape.java public interface IShape{ void draw0: } 2.具体产品(Concrete Product)角色:简单工厂方法模