什么是范式

在最开始,可将范式想象成一种特别聪明、能够自我适应的手法,它可以解决特定类型的问题。也就是说,它类似一些需要全面认识某个问题的人。在了解了问题的方方面面以后,最后提出一套最通用、最灵活的解决方案。具体问题或许是以前见到并解决过的。然而,从前的方案也许并不是最完善的,大家会看到它如何在一个范式里具体表达出来。

尽管我们称之为“设计范式”,但它们实际上并不局限于设计领域。思考“范式”时,应脱离传统意义上分析、设计以及实施的思考方式。相反,“范式”是在一个程序里具体表达一套完整的思想,所以它有时可能出现在分析阶段或者高级设计阶段。这一点是非常有趣的,因为范式具有以代码形式直接实现的形式,所以可能不希望它在低级设计或者具体实施以前显露出来(而且事实上,除非真正进入那些阶段,否则一般意识不到自己需要一个范式来解决问题)。

范式的基本概念亦可看成是程序设计的基本概念:添加一层新的抽象!只要我们抽象了某些东西,就相当于隔离了特定的细节。而且这后面最引人注目的动机就是“将保持不变的东西身上发生的变化孤立出来”。这样做的另一个原因是一旦发现程序的某部分由于这样或那样的原因可能发生变化,我们一般都想防止那些改变在代码内部繁衍出其他变化。这样做不仅可以降低代码的维护代价,也更便于我们理解(结果同样是降低开销)。
为设计出功能强大且易于维护的应用项目,通常最困难的部分就是找出我称之为“领头变化”的东西。这意味着需要找出造成系统改变的最重要的东西,或者换一个角度,找出付出代价最高、开销最大的那一部分。一旦发现了“领头变化”,就可以为自己定下一个焦点,围绕它展开自己的设计。
所以设计范式的最终目标就是将代码中变化的内容隔离开。如果从这个角度观察,就会发现本书实际已采用了一些设计范式。举个例子来说,继承可以想象成一种设计范式(类似一个由编译器实现的)。在都拥有同样接口(即保持不变的东西)的对象内部,它允许我们表达行为上的差异(即发生变化的东西)。合成亦可想象成一种范式,因为它允许我们修改——动态或静态——用于实现类的对象,所以也能修改类的运作方式。
在《Design Patterns》一书中,大家还能看到另一种范式:“继承器”(即Iterator,Java 1.0和1.1不负责任地把它叫作Enumeration,即“枚举”;Java1.2的集合则改回了“继承器”的称呼)。当我们在集合里遍历,逐个选择不同的元素时,继承器可将集合的实施细节有效地隐藏起来。利用继承器,可以编写出通用的代码,以便对一个序列里的所有元素采取某种操作,同时不必关心这个序列是如何构建的。这样一来,我们的通用代码即可伴随任何能产生继承器的集合使用。

时间: 2024-08-01 08:15:49

什么是范式的相关文章

数据库范式1NF 2NF 3NF BCNF

(转自:http://www.itisedu.com/phrase/200604241410105.html) 设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合.构造数据库必须遵循一定的规则.在关系数据库中,这种规则就是范式.关系数据库中的关系必须满足一定的要求,即满足不同的范式.目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).第四范式(4NF).第五范式(5NF)和第六范式(6NF).满足最低要求的范式是第一范式(1NF)

数据库设计范式1——三范式

一讲到数据库设计,大家很容易想到的就是三范式,但是第四.第五范式又是什么,不是很清楚,三范式到底怎么区分,也不清楚,作为数据库设计的基础概念,我再讲解下数据库范式. Normal form Brief definition 1NF First normal form Table faithfully represents a relation, primarily meaning it has at least one candidate key 2NF Second normal form N

数据库设计范式深入浅出

关系数据库设计之时是要遵守一定的规则的.尤其是数据库设计范式 现简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式和第五范式留到以后再介绍. 在你设计数据库之时,若能符合这几个范式,你就是数据库设计的高手. 第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值 都是不可再分的最小数据单位,则称R是第一范式的关系.例:如职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话 和一个家里电话号码) 规范成为1NF有三种方法: 一是重复存

数据库设计范式(实例)

设计|数据|数据库|数据库设计 关系数据库设计之时是要遵守一定的规则的.尤其是数据库设计范式 现简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式和第五范式留到以后再介绍. 在你设计数据库之时,若能符合这几个范式,你就是数据库设计的高手. 第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值 都是不可再分的最小数据单位,则称R是第一范式的关系.例:如职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话 和一个家里电话号码) 规范成

数据库规范化三个范式应用实例

规范|规范化|数据|数据库|应用实例 规范化为什么重要?目前很多的数据库由于种种原因还没有被规范化.本文中解释了其中一些原因,并用不同形式的范式(normal form)规范化了一个保险公司的理赔表.在这个过程中表的改变以及添加的一些附加表使数据库效率更高.错误更少.更容易维护. 数据库的规范化是优化表的结构和把数据组织到表中的实践,这样做数据才能更明确.规范化使你能够改变业务规则.需求和数据而不需要重新构造整个系统. 通过改变存储数据的方式--仅仅改变一丁点--并改变访问这些信息的程序,你就可

关系数据库的范式

  构造数据库必须遵循一定的规则.在关系数据库中,这种规则就是范式.范式是符合某一种级别的关系模式的集合.关系数据库中的关系必须满足一定的要求,即满足不同的范式.目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).第四范式(4NF).第五范式(5NF)和第六范式(6NF).满足最低要求的范式是第一范式(1NF).在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推.一般说来,数据库只需满足第三范式(3NF)就行了.下面我们举例介绍第一范

最佳化Table Design三范式

最佳化 Table Design   將 Table 的資料庫分解為較小的 Table 直到每個 table 的每個 field 都 depend on 該 table 的 key why?  降低重複性 (redundancy) ?*指資料之儲存*?   清除不一致性(Consistency) ?*指資料之異動*? 设计三范式: (1)Frist Normal Form (1NF)    "每一資料欄只含一個值."   检查有无具有重复值的属性,有则将其移到新的实体中. (2)Sec

Listen Software解决方案 “How To” 系列1:范式大纲

解决 Listen Software解决方案 "How To" 系列1:范式大纲           总则              下面的范式大纲通常意味着以较少的列将表分成两个或更多的表,在较小的表中设计主外键关联.因此它们可以通过join操作符重新连接.分割表的优势在于减少数据冗余. 下面是标准范式的简要概述:         第一范式            对于表中的每一行,必须且仅仅有唯一的行值.在一行中的每一列仅有唯一的值并且具有原子性.         第二范式     

建立对象数据库-内存映射范式,需要中间层容器的支持

对象|数据|数据库|中间层 在<设想使用XML和关系数据库形成一个对象数据库>一文中,已经阐述了关系数据库和对象数据库的主要区别:对外键的使用是通过直接记录,还是遍历外键子表来获得.而这里,是面对另一个重要的区别:如何释放对象的资源.对于对象数据库而言,它等同于是一批直接存于数据库中的串行化对象,它的实际存储形式到底是不是按关系结构存储并不是最重要的,重要的是调用程序读入内存的就是一个对象,而不是游标映射:这样,使用对象数据库就必须存在着一个如何清除用完的对象资源的问题:同时由于对象数据库必然

数据库设计范式

设计|数据|数据库|数据库设计 关系数据库设计之时是要遵守一定的规则的.尤其是数据库设计范式 现简单介绍1NF(第一范式),2NF(第二范式),3NF(第三范式)和BCNF,另有第四范式和第五范式留到以后再介绍. 在你设计数据库之时,若能符合这几个范式,你就是数据库设计的高手. 第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值 都是不可再分的最小数据单位,则称R是第一范式的关系.例:如职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话 和一个家里电话号码) 规范成