设计模式与编程思想总结

       设计模式 和框架在软件设计中是两个不同的研 究领域 。

设计模式研究的是一个设计问题的解决方法 ,一 个模式可应用于不同的框架和被不同的语言所实现 ;

而框架则是一个应用的体系结构 ,是一种或多种设计模式和代 码的混合体 。虽然它们有所不同,但却共同致力于使人们 的设计可以被重用 ,在思想上存在着统一性的特点 ,因而 设计模式的思想可以在框架设计中进行应用。

1 设计模式的主要思想

1. 1 首先是“分解”的思想和意识 分解有两种类型,即对象粒度大小的确定和设计内容 分层。

确定对象粒度大小的含义是指将含有那些不稳定 因素的大粒度对象分解为较为稳定的多个小对象;

设计内 容分层在许多模式中都在应用,不管出于何种动机 ,大部 分模式所采用的对抽象类和接口编程就是一种分层 ,另外 还有将系统分解成子系统、对象构成系统的方式。

1. 2 分解后的不同模块间的联系方式应尽可能简单统一

      以分解的一种类型———分层而言 ,分层将会产生分层 界面( 不同层间的联系面) ,如果分层界面不合理或较为复 杂 ,则当变化产生时,变化在各层间传递的几率会增大,再 加上传递所引起的效率降低,反而弄巧成拙。因此,要求 不同层间的联系方式应该尽可能简单和统一,在软件中对 应的术语就是“松耦合”,在设计模式中对应的要求就是 “对抽象类或接口编程,而不对具体类编程”。

      在面向对象思想中,抽象类和接口最符合简单和统一的要求,因为抽象类声明的引用能够被继承其的子类对象动态绑定,对使用者来说简单, 另外又可替换,所以又统一 ; 而接口会被不同的类所实现,对使用者来说,也是既简单又统一 。相比之下 ,具体类较为复杂,也最容易产生变化 ,因而使用者也最容易随之变化。正因为抽象类和接口具有简单和统一的特点,以它们作为分解后各模块的联系 方式 ,可降低模块间联系的耦合度,便于软件的维护和扩 充 ,便于分解的工作最后能够被轻易地整合,并能够适应一定变化所带来的影响 。当然,在设计模式中 ,并不是仅有这一种降低耦合度的方法,但不管怎样,它们都符合不同模块之间的联系方式应该简单和统一这一特点 

1. 3 设计模式的第三个思想就是共享 共享应用的前提是前面所说的将稳定性较差的大粒 度对象分解为稳定性较好的多个小粒度对象,如果这些小 粒度对象不能被共享,原先的分解就毫无意义。共享的引 入,有效地降低了软件变化的影响范围,有助于问题的发 现和确定其范围所在,便于任务的分解与整合,降低了重 复劳动 ,提高了分配工作的效率和开发速度 。

1. 4 设计模式第四个思想就是复用 提供复用的基本手段有继承和对象之间通过引用而 进行的组合,对于一些具体语言如 C++, 还提供了参数 化类型等复用手段 。复用使得体系结构变得清晰,易于理 解,同时降低了软件开发的强度 ,提高了软件质量

2 框架的含义

软件框架是项目软件开发过程中提取特定领域软件 的共性部分形成的体系结构 ,不同领域的软件项目有着不 同的框架类型。框架的作用在于: 由于提取了特定领域软 件的共性部分,因此在此领域内新项目的开发过程中代码 不需要从头编写,只需要在框架的基础上进行一些开发和 调整便可满足要求 ; 对于开发过程而言,这样做会提高软 件的质量,降低成本,缩短开发时间,使开发越做越轻松, 效益越做越好,形成一种良性循环

3 框架和设计模式的区别 框架和设计模式存在着显著的区别 ,主要表现在二者 提供的内容和致力应用的领域。

1)从应用领域上分,框架给出的是整个应用的体系 结构; 而设计模式则给出了单一设计问题的解决方案 ,并 且这个方案可在不同的应用程序或者框架中进行应用。

2)从内容上分,设计模式仅是一个单纯的设计,这个 设计可被不同语言以不用方式来实现; 而框架则是设计和代码的一个混合体 ,编程者可以用各种方式对框架进行扩 展,进而形成完整的不同的应用 。

3)以第二条为基础,可以得出设计模式比框架更容 易移植 : 框架一旦设计成形 ,虽然还没有构成完整的一个 应用,但是以其为基础进行应用的开发显然要受制于框架 的实现环境 ; 而设计模式是与语言无关的 ,所以可以在更 广泛的异构环境中进行应用 。 总之,框架是软件,而设计模式是软件的知识

4 设计模式思想在构建软件框架中的应用 在项目软件开发过程中 ,构建软件框架并不是一件容 易的事情,为此人们提出了各种方法,例如实践法和系统 法  ,两阶段构建法, 总结了构建过程的相关注意因
素,以及评价框架设计高低的准则 。而文中提出的设 计模式思想如果在构建框架中得到应用 ,则会使框架设计 变得较为容易, 并且可在上面提出的方法中作为思想工具 ,提升框架的设计水平 。

4. 1 设计模式分解思想的应用 正如前面所述,框架是应用的共性抽取,因此 ,在项目 开发过程中,如果要形成特定领域软件框架,首先应该将 应用的共性与个性分解开 。这里所说的共性来源于两个 方面 : 一个方面是应用所处领域业务规则共性的抽取; 另 一个是软件在表达业务规则方面进行的抽象。虽然设计 的许多对象来源于现实世界,但严格反映当前世界的模型 并不能产生也能反映将来世界的系统。设计中的抽象对 于产生灵活的设计至关重要,例如,现实世界并不存在描 述算法的对象,但它们却是设计的关键部分,人们应该将 这些不明显的抽象从应用中提炼分解出来 ,作为框架软件 中的一部分,为框架的未来重用提供可能 。从而可见,设 计模式的分解思想也是构建软件框架的基本思想 。

4. 2 设计模式松耦合思想的应用 由于软件框架需要在不同的项目中重用,在重用的时 候 ,框架内的模块要和具有个性特点的不同项目的框架外 模块进行耦合,只有降低它们之间的耦合程度 ,才容易实 现框架和不同项目框架外模块进行组合,框架的共性表现 的才充分 。因此 ,应该应用设计模式的思想来实现框架和 框架外模块之间的“松耦合”,而接口、抽象类正可以担当 这种降低耦合度的角色,实现联系方式的简单和统一 。所 以在框架设计中,框架和框架外模块联系的方式最好应该 以接口和抽象类的方式来体现。

4. 3 设计模式共享思想的应用 在软件框架的内部设计上如果引入设计模式的共享 思想,会使框架具有如下二个优点 :

1)由于“共享”是共享那些由稳定性较差的大粒度对 象分解成的稳定性较好的小粒度对象 ,因此共享思想的引 入会使框架内部对象数量相对较少,并具有稳定性好的特 点 ,从而有助于整体框架的稳定性 ,便于框架的重用。

2)共享会使框架内部结构变得清晰 ,便于人们对框 架的理解和应用。 

4. 4 设计模式复用思想的应用

框架在不同项目的重用并不意味着框架必须是一成 不变的,有时候框架在新的应用中也需要在原有的基础上 进行调整和变化 ,需要在调整中复用原来框架中的设计, 因此,框架如何进行复用设计能更好地适应重用情况下的 变化 ,并使这种变化的影响面最小,对于框架的重用性来 说至关重要,而设计模式复用思想在这方面有借鉴作用。

设计模式提出了“优先使用对象组合 ,而不是类继承” 的复用思想。类继承是“白箱复用”,因为父类的内部细节 对子类可见,这种可见性增强了子类和父类的耦合度,导 致父类的任何变化都会影响到子类; 相比之下 ,对象组合 是一种“黑箱复用”,组合是通过对象的接口完成的,对象 内部的细节不可见,因为基于接口而组装对象不破坏对象 的封装性 ,所以对象之间存在较少依赖关系,耦合度程度力、物力和人力 。 因此,开展对道路交通肇事逃逸案的侦破 研究就显得越来越迫切 

猜你喜欢

转载自blog.csdn.net/m0_37708405/article/details/81090191