软件设计模式的原则
作者:网络转载 发布时间:[ 2013/8/23 14:14:01 ] 推荐标签:
看了设计模式,后看的总是感觉他们有很大的相似之处,像是世界上万事万物都有其生存法则一样。仔细分析其实设计模式都是围绕一条主线来的。这是设计模式的原则。你可以把设计原则比作一门语言。把设计模式当作这门语言编写出来的程序。如果你精通了语言剩下的编码是很简单的事情了。
对于层出不穷的设计模式,比如Gof的23种设计模式,MVC模式,到底应该怎样去学习,如果我们单纯的一个一个的研究设计模式本身,那么只能是越看越多,越来越乱。其实我们只要抓住设计模式的原则,能很清楚的分析出它为什么会这么做。
设计模式原则再加上OOP三大属性(封装,继承,多态)我们能很清楚的理解设计模式。
首先提出一下什么是设计模式:
模式:每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。
这是关于模式经典的定义,作者是建筑大师ChristopherAlexander。如果是第一次看到这句话,多数人会觉得有些抽象难懂。其实“模式”两个字只是一个代号,像我叫李守宏,如果我改叫李四也没什么问题,只是我更喜欢李守宏这个名字,所以从Christopher开始,有了“模式”这个词,人们也都把关于“重复发生的问题的描述和解决办法”统称为模式。
“模式”这个词是不局限于软件开发行业的,它几乎无处不在,它其实是一种经验的积累,象大多数人的教育经历都是从小学到初中再到高中再到大学,这也是一种模式,是中国的教育模式;现在越来越火的出国热,也是另一种模式,海外留学模式。因为GOF的《设计模式:可复用面向对象软件的基础》一书描述的23种经典设计模式,奠定了模式在软件行业的地位,从此人们提到“设计模式”是默指“面向对象设计模式”,但是模式不局限于软件行业,即使在软件行业,也不局限于GOF描述的23种设计模式,例如我们常用的MVC等。
因为模式是一种经验的积累和总结,所以通过模式,我们可以站在巨人的肩膀上去思考问题、解决问题,熟练使用设计模式可以提高我们的工作效率,改善产品质量,终带来经济效益。因此对于任何想开发出灵活高效、健壮的软件产品的个人或团体,熟练掌握并正确使用设计模式都是必须掌握的基本技能。
谈到设计模式,不能不说一下GRASP(职责分配原则),这个比模式更重要。我将再后边接着来分析。
下面我来分析一下设计模式原则,以及在设计模式中的体现。主要参考:程杰<大话设计模块>(这里用DH代替)和JustinTech的博客。
一:设计模式的核心原则是:"开-闭"原则(Open-ClosedPrinciple缩写:OCP),一切的一切都是围绕着"开-闭"原则展开的。
开闭原则:说软件实体(类,模块,函数等)应该可以扩展,但是不可以修改[DH]。
意思是,在一个系统中,对于扩展是开放的,对于修改是关闭的,一个好的系统是在不修改源代码的情况下,可以扩展你的功能。。而实现开闭原则的关键是抽象化。
在"开-闭"原则中,不允许修改的是抽象的类或者接口,允许扩展的是具体的实现类,抽象类和接口在"开-闭"原则中扮演着极其重要的角色。即要预知可能变化的需求。又预见所有可能已知的扩展。。所以在这里"抽象化"是关键!
当然对于修改,我们不可能完全避免,也不可能完全预知到未来的变化。所以我们要做到尽量去不要修改,或者少的修改能达到我们的目标。
例如:对于简单工厂模式。我们有能力预知到未来可能添加计算,所以,我们将运算类抽象出来。为了以后方便扩展。这里的运算类是不可以修改的。但是对于他的子类。我们是可以扩展的。
设计模式中的体现UML图
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11