码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式01

时间:2014-07-06 21:14:58      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:style   http   java   color   os   2014   

 

 

 

设计模式01

1 设计模式

 

1.1 基本原则

系统的可扩展性由开-闭原则、里氏代换原则、依赖倒转原则、组合/聚合复用原则保证;系 统的灵活性由开-闭原则、迪米特原则、接口隔离原则保证;系统的可插入性由开-闭原 则、里氏代换原则、依赖倒转原则、组合/聚合复用原则保证。

当一个软件复用有道、易于维护,新功能加入到系统,或修改一个已有的功能将是容易 的,因此,代码高手就没有用武之地;而当软件是设计低劣、可维护性差,代码高手就必 须用各种非常规的方式,连继作战,加班加点以达到目的。

1.2 开-闭原则

一个软件应对扩展开放、对修改关闭,用head first中的话说就是:代码应该如晚霞中 的莲花一样关闭(免于改变),如晨曦中的莲花一样开放(能够扩展);英文原文:Software entities should open for extension, but closed for modification.

这个原则说的是,在设计一个模块时,应当使这个模块可以在不被修改的前提下被扩展, 换言之,应当可以在不必修改源代码的情况下改变这个模块的行为;因为所有软件系统中 有一个共同的特性,即它们的需求都会随时间的推移而发生变化,在软件系统面临新的需 求时,满足开-闭原则的软件中,系统已有模块(特别是最重要的抽象层)不能再修改,而 通过扩展已有的模块(特别是最重要的抽象层),可以提供新的行为,以满足就需求。

开-闭原则如果从另一个角度讲述,就是所谓可变性封装原则(Principle of Encapsulation of Variation,略写作EVP),找到系统的可变因素,将之封装起来。 用[GOF95]的话说:考虑你的设计中有什么可能发生变化,允许这些变化而不让这些变化 导致重新设计。可变性封装原则意味着:

  1. 一种可变性不应当散落在代码的很多角落,而应当被封装到一个对象中,同一种可变性 的不同表现可以体现在子类中,继承应当被看做是封装变化的方法,而不仅仅看做是从 父类派生子类
  2. 一种可变性不应当与另一种可变性混合在一起,所以一个设计模中,类图的继承层次 不会超过两层,不然就意味着将两种可变性混在一起

1.2.1 与其他原则关系

做到开闭原则不是件容易的事,但也很多规律可循,这些规律也同样以设计原则的身份 出现,它们都是开-闭原则的手段和工具,是附属于开-闭原则的。

Date: 2014-07-04 17:21:36

Author:

Org version 7.8.06 with Emacs version 23

Validate XHTML 1.0

ferer">Validate XHTML 1.0

设计模式01,布布扣,bubuko.com

设计模式01

标签:style   http   java   color   os   2014   

原文地址:http://www.cnblogs.com/machine/p/3824539.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!