封闭原则是一个有倾向于完成而尚未闭合的图形易被看作一个完整的图形。例如,仅仅看到对称布局的四个直角,就感到由这四个直角所包围的正方形;缺了一个角的三角形仍被看成是完整的三角形。又如把并排等距的一组垂直线段两两相对加上横向短线,就会把有四条横线包围的每两条竖线看成一个整体。
这些图形虽未闭合,或距闭合甚远,但其辅助线的倾向引导我们把它们视为整体,也可以说其中包含力的作用和动态趋势。即使把其中相互背离的两条线单独取出来放在一起,距离再近人们也会感到其貌合神离的状态。
开发-封闭原则是指类、函数、模块等等可以扩展、但是不可修改。
无论模块多么的封闭,都可能存在一些无法预料的变化,即使不能完全封闭,依然要对能预想到的变化封闭起来。先猜测最有可能发生变化的种类,然后构造抽象来隔离这些种类的变化(比如接口,抽象类等)。
在最初编码时,也许想象不到什么变化,没有关系,只要当某一刻这个变化发生时,我们就创建抽象来隔离以后发生的同类变化,这就可以了。
面对需求的新增或改动时,对程序的改动是新增形式的,而不是更改现有的代码。
开发人员应该对频繁的变化做出抽象,不是细到每个部分都去抽象,刻意的抽象不是一种成熟的抽象。
软件设计是从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案。
软件设计是把许多事物和问题抽象起来,并且抽象它们不同的层次和角度。将问题或事物分解并模块化使得解决问题变得容易,分解的越细模块数量也就越多,它的副作用就是使得设计者考虑更多的模块之间耦合度软件的设计是一个将需求转变为软件陈述(表达)的过程。这种陈述给一个对软件的全局观点。系统通过逐步求精使得设计陈述逐渐接近源代码。
这里有两个基本步骤;第一步是初步设计Preliminarydesign,关注于如何将需求转换成数据和软件框架。
第二步是详细设计Detaildesign,关注于将框架逐步求精细化为具体的数据结构和软件的算法表达。的情况。
下一篇:软件开发——一个学习的过程