什么是设计模式?
一个设计模式是针对某一类问题的最佳解决方案,而且已经被成功应用于许多系统的设计中,它解决了在某种特定情境中重复发生的某个问题。因此,设计模式是从许多优秀的软件系统中总结出成功的可复用的设计方案。
每一个设计模式描述一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次一次的使用该方案而不必做重复劳动。
模式的目标是,把共通问题中的不变部分和变化部分分离出来。不变的部分,就构成了模式,因此,模式是一个经验提取的“准则”,并且在一次一次的实践中得到验证,在不同的层次有不同的模式,小到语言实现,大到架构。在不同的层面上,模式提供不同层面的指导。
一个设计模式的四个基本要素:
1) 名称
一个模式的名称高度概括该模式的本质,有利于该行业统一术语,便于交流使用。
2) 问题
描述应该在何时使用模式,解释设计问题和问题存在的前因后果,描述在怎样的环境下使用该模式。
3) 方案
描述设计的组成部分,他们之间的相互关系及各自的职责和协作方式。
4) 效果
描述模式的应用效果及使用模式应该权衡的问题。主要效果包括使用模式对系统的灵活性,扩充性和复用性的影响。
什么是框架?框架不是模式,框架是针对某个领域,提供用于开发应用系统的类的集合,程序设计者可以使用框架提供的类设计一个应用程序,而且在设计应用程序时,可以针对特定的问题使用某个模式。
框架不是一种可复用的设计方案,它是由可用于设计解决某个问题的一些类组成的集合,程序设计人员通过使用框架提供的类或扩展框架提供的类进行应用程序的设计,例如:java中,开发人员使用Swing框架提供的类设计用户界面;使用Set框架提供的类处理数据结构相关的算法等。
模式本质上是逻辑概念,以概念的形式而存在,模式所描述的方案独立于编程语言。框架的应用是以具体的软件组织而存在,只能被特定的软件设计者使用。
一个框架往往会包括多个设计模式,他们是面向对象系统获得最大复用的方式,较大的面向对象应用会由多层彼此合作的框架组成,例如:java web设计中的Struts,Spring和Hibernate等框架。
框架是构成一类特定软件可复用设计的一组相互协作的类,EJB(EnterpriseJavaBeans)是Java应用于企业计算的框架。框架通常定义了应用体系的整体结构类和对象的关系等等设计参数,以便于具体应用实现者能集中精力于应用本身的特定细节。框架主要记录软件应用中共同的设计决策,框架强调设计复用,因此框架设计中必然要使用设计模式。一个著名的框架往往会是许多设计模式的具体体现。