摘自:http://dev.yesky.com/485/3405985.shtml
曾经看过一本书叫《道法自然》,内容略记得一二,但我最欣赏的是它的书名。软件设计没什么太神秘有东西,只要用心体会,其实一切都很自然。软件的设计之“道”,也不在于设计有多么的华丽、精巧,而在于其朴实、自然,最终达到“以无招胜有招”,进入一个全新的境界。
一、软件设计理论的层次
以我的拙见,软件设计领域中的各种概念,可以分为以下几个层次来进行理解:
1、软件设计的目的:重用性、扩展性。
这是最高的层次,是应对软件危机的需要。
2、设计原则:低耦合、高聚合。
各种软件设计的原则,如依赖倒置原则、单一职则原则、面向接口等,以及各种设计模式,其根本的目的其实只是为了降低耦合这么简单。因为只有低耦合才能更好的适应变化,更好的重用和扩展。
3、实现方法:运用设计模式封装变化、降低耦合。
设计模式只是用来“封装变化、降低耦合”的工具而已。它是面向对象设计时代的产物,其本质就是充分运用面向对象的三个特性,即:封装、继承和多态,进行灵活的组合运用。
二、关于耦合
1、耦合的粒度
耦合无论如何也是不可避免的。当我们实现接口、继承父类的时候,就会不可避免的产生耦合。耦合是有不同粒度的,我们解耦到什么粒度为止,我认为应以模块的重用粒度为准。尽量解除重用模块或对象之间的耦合。而重用模块之内的耦合,应属于聚合的范畴,所以不要盲目的去解耦,否则就陷入了误区。
2、解耦的原理
怎样才能解耦呢,或者说为什么各种设计模式能达到解耦的目的呢?我觉得有以下几个思路:
(1)将具体的东西抽象处理
(2)将分散的东西集中处理
而面向对象中的接口、继承正为我们提供了这样的一种机制。通过访问接口或基类或抽象类,而不是具体的实现类,从而与具体的实现类达到了解耦的目的。我们还可以设计一些控制类,像润滑剂一样,协调各实现类之间的访问,也可以达到耦的目的。
事实上,各种设计模式的基本思想也就是这样。创建型模式是为了解除创建对象时产生的耦合,实际上是解除对类称名的依赖,而结构型和行为型是为了解除对象属性或方法的直接调用。不管什么设计模式,都是将对具体实现类的访问提升为对接口、基类或用于协调的控制类的访问。
三、关于接口
这一节更具体,谈一谈接口,因为使用接口是软件设计的重要手段,但已经不属于“道”了~
1、接口与继承
接口描述的是对象某一个方面行为特征。使用接口与使用继承关系各有优缺点,使用子类继承可以继承父类的功能,体现了重用的精神。而接品更加灵活,因为它解除了子类与父类之间的高度耦合,它体现在灵活扩展的精神。
2、接口与纯虚类
理论上接口可以由纯虚基类实现类似的功能,那为什么还我们不去掉接口的概念,而直接使用虚类呢?
接口存在的理由就是它更加灵活,关系简单,易于理解。比如一个类可以实现十几个甚至几十个接口,但一般开发工具只支持单继承(由于多继承太容易导致混乱和冲突),如果要继承十几层,系统结构想必会无法理解了,我以为这是接口存在的最重要的原因。
如果接口和虚类继承结合使用,可以产生强大的威力,这也是许多设计模式的“杀手锏”。
以上算是总结一下自己的心得。肯定有不少片面之处,请各位指教。
分享到:
相关推荐
第一篇:心得体会岗前培训心得体会 (3) .docx
软件开发心得体会是软件开发人员在开发过程中的经验总结和心得体会。本文从软件开发的需求分析、语言选择、界面设计、测试计划、项目管理、团队合作等多方面,分享了作者在开发视频和图像处理软件的经验。 一、软件...
第一篇:入警岗前培训心得体会入警岗前培训心得体会 .docx
### FPGA设计经验分享:从时序到系统结构 在深入探讨FPGA设计的精髓之前,有必要先理解FPGA的本质——一种可编程逻辑器件,能够通过硬件描述语言(HDL)如VHDL或Verilog来定义电路逻辑,实现各种数字信号处理任务。...
软件测试设计是软件开发过程中的关键环节,它旨在确保软件产品的质量、稳定性和可靠性。等价类划分是一种经典的黑盒测试方法,通过这种方法,测试人员能够有效地减少测试用例的数量,但仍然能覆盖大部分可能的输入...
随着问题的不断涌现,一些master们开始尝试去总结经验,并归纳了一些规范去指导软件的分析、设计、实现、测试、维护、人员交流协作、项目预算及时限控制等方方面面,这就是软件工程的前身。 软件工程到现在已发展了...
然而,王建云同学也意识到自身的不足,尤其是在网页设计软件的深度运用和网页制作代码方面。他认识到,想要设计出更专业、更完善的网页,必须掌握HTML、CSS等网页制作代码。虽然目前他在代码运用上还有困难,但他已...
优秀范文:解放思想大讨论心得体会.docx
优秀范文:马克思主义理论学习心得体会.docx
优秀范文:金融制度控制学习心得体会.docx
优秀范文:学习袁庭玉心得体会.docx
优秀范文:学习贯彻工作规划心得体会.docx
优秀范文:教师十7大心得体会.pdf
"程序设计心得体会.docx" 通过对程序设计心得体会的总结,我们可以获得以下知识点: 1. 程序设计需要团队精神和合作,大家共同努力,互相帮助和分享经验是非常重要的。 在程序设计过程中,团队精神是非常重要的。...
系统设计心得体会 系统设计是电子商务系统的核心组成部分,对于电子商务系统的设计是必须会的。系统设计包括系统规划、系统分析和系统设计三部分内容。 一、系统规划内容包括: (1) 系统建设的背景、必要性和...
从给定的信息来看,主题是围绕“课程设计心得体会”展开的。下面将对这一主题进行深入探讨,并结合可能涉及的方面来阐述相关的知识点。 ### 一、课程设计概述 课程设计是指根据一定的教学目标和教育理念,对课程的...
程序设计心得体会,大家有用的话就下载吧,希望对你们又帮助
PLC 设计心得体会是指通过 PLC 设计实践中获得的经验和体会,包括设计原理、设计步骤、设计方法等。通过学习 PLC 设计心得体会,学生可以更好地掌握 PLC 设计的基本步骤和方法,提高自己的设计能力和工程实践能力。...