什么是设计模式?
在生活和工作当中的各个方面,不断地重复一些事物和事情的方法,可以看作是一种设计模式,例如:
①小王家的茶几和小李家的茶几很像,但小王家的茶几用门代替了抽屉。
②张三家的花园和李四家的花园很像,但李四家的花园种的是菊花。
那么在程序设计中也会有同样的事情,例如,开发一个程序可以通过很多技巧来完成程序功能。
程序设计模式没有一个统一的定义,它是开发者在开发中不断积累、总结的一种可复制的方案,下面是该方面几位专家给出的理解:
l 设计模式是对程序设计人员经常遇到的设计问题的可再现的解决方案(The Smalltalk Companion)。
什么是框架?
框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。
为什么要用框架?
因为软件系统发展到今天已经很复杂了,特别是服务器端软件,设计到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。
框架一般处在低层应用平台(如J2EE)和高层业务逻辑之间的中间层。
软件为什么要分层?
为了实现“高内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源…总之好处很多啦:)。
l 设计模式建立了一系列描述如何完成软件开发领域中的特定任务的规则(Pree 1995)。
l 设计模式更关注与复用可重复出现的结构设计方案,而框架注重于具体设计和实现(Coplien and Schmidt 1995)。
l 设计模式提出了一个发生在特定设计环境中的可重复出现的设计问题,并提供解决方案(Buschmann et al.1996)。
l 设计模式识别并确定类和实例层次上或组件层次上的抽象关系(Gamma,Johnson,and Vlissides,1993)。 总之,设计模式在设计者中是一种流行的思考设计问题的方法,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了使代码具有可重用性、让代码更容易被他
人理解和保证代码可靠性。设计模式使代码编制为工程化,设计模式是软件工程的基石,像高楼的一块块砖。
设计模式与架构的关系 |
现在,使用面向对象软件系统一般划分为三大类:应用程序、工具箱和框架(Framework), 框架通常定义了应用体系的整体结构、类和对象的关系等设计参数,以便于具体应用实现者能集中 另外,设计模式有助于对框架结构的理解,成熟的框架通常使用了多种设计模式, |
为什么要使用设计模式 |
敏捷开发人员不会对一个预先设计应用原则和模式。相反,这些原则和模式被应用在一次次的迭代中, 为什么使用设计模式,笔者的体会如下: l 设计模式是为了使设计适应变化;
l 设计模式是重构的工具;
l 设计一开始就要保持流畅、简单,并具有持续性;
l 不能过度使用设计模式。
使用设计模式的目的是为了适应未来的变化,变化之所以存在是因为一切的事物都具有不可预见性, |
设计模式基本要素 |
|
设计模式使人们可以更加简单方便地复用成功的设计和体系结构,将已证实的技术表述成设计模式也会使新加入的系统开发者更加容易理解其设计思路。设计模式的基本要素为模式名称、问题、解决方案和效果。 (1)模式名称 一个助记名称,用来描述设计模式、解决方案和效果。设计模式允许在较高的抽象层次上进行设计。 (2)问题 问题主要描述在何时使用设计模式。它解释了设计问题和问题存在的前因后果、特定的设计问题和怎样 (3)解决方案 解决方案描述了设计的组成成分、它们之间的相互关系及各自的职责和协作方式。因为模式就像一个模板, (4)效果 描述了模式应用的效果及使用模式权衡的问题。尽管描述设计决策时,并不是总提到模式效果,但它们对于评价设计选择和理解使用模式的代价及优势具有重要意义。 软件效果大多关注对时间和空间的衡量,它们也表述了语言和实现问题。 因为复用是面向对象设计的要素之一,所以模式效果包括它对系统灵活性、 扩充性或可移植性的影响,显式地列出这些效果对理解和评价这些模式很有帮助。 |