范式分类

《Design Patterns》一书讨论了23种不同的范式,并依据三个标准分类(所有标准都涉及那些可能发生变化的方面)。这三个标准是:
(1) 创建:对象的创建方式。这通常涉及对象创建细节的隔离,这样便不必依赖具体类型的对象,所以在新添一种对象类型时也不必改动代码。
(2) 结构:设计对象,满足特定的项目限制。这涉及对象与其他对象的连接方式,以保证系统内的改变不会影响到这些连接。
(3) 行为:对程序中特定类型的行动进行操纵的对象。这要求我们将希望采取的操作封装起来,比如解释一种语言、实现一个请求、在一个序列中遍历(就象在继承器中那样)或者实现一种算法。本章提供了“观察器”(Observer)和“访问器”(Visitor)的范式的例子。

《Design Patterns》为所有这23种范式都分别使用了一节,随附的还有大量示例,但大多是用C++编写的,少数用Smalltalk编写(如看过这本书,就知道这实际并不是个大问题,因为很容易即可将基本概念从两种语言翻译到Java里)。现在这本书并不打算重复《Design Patterns》介绍的所有范式,因为那是一本独立的书,大家应该单独阅读。相反,本章只准备给出一些例子,让大家先对范式有个大致的印象,并理解它们的重要性到底在哪里。

时间: 2024-08-30 09:38:01

范式分类的相关文章

[学习笔记]Thinking in Java (the 2nd edition) Study Note (4)

笔记 第13章 创建窗口和程序片 略 第14章 多线程 多线程的实现基本可以有2种方法:从Thread类继承 和 实现Runnable 接口 1.从线程继承为创建一个线程,最简单的方法就是从Thread类继承.这个类包含了创建和运行线程所需的一切东西.Thread最重要的方法是run().但为了使用run(),必须对其进行过载或者覆盖,使其能充分按自己的吩咐行事.因此,run()属于那些会与程序中的其他线程"并发"或"同时"执行的代码.虽然重载的是run() ,但在

sqlserver另类非递归的无限级分类(存储过程版)

下面是我统计的几种方案: 第一种方案(递归式): 简单的表结构为: CategoryID int(4), CategoryName nvarchar(50), ParentID int(4), Depth int(4) 这样根据ParentID一级级的运用递归找他的上级目录. 还有可以为了方便添加CategoryLeft,CategoryRight保存他的上级目录或下级目录 第二种方案: 设置一个varchar类型的CategoryPath字段来保存目录的完整路径,将父目录id用符号分隔开来.比

设计范式学习总结

从表面看,由于象TrashVisitor.java这样的设计包含了比早期设计数量更多的代码,所以会留下效率不高的印象.试图用各种设计方案达到什么目的应该是我们考虑的重点.设计范式特别适合"将发生变化的东西与保持不变的东西隔离开".而"发生变化的东西"可以代表许多种变化.之所以发生变化,可能是由于程序进入一个新环境,或者由于当前环境的一些东西发生了变化(例如"用户希望在屏幕上当前显示的图示中添加一种新的几何形状").或者就象本章描述的那样,变化可能

大数据时代比较教育研究范式的转型

随着互联网和信息技术的发展,大数据正在影响着政治.经济.教育.科技.文化.医疗等社会生活的各个领域.为了应对大数据的挑战,各国纷纷将大数据研究提升为国家战略,例如,美国政府在2012年3月29日率先发布了<大数据研究和发展计划>,决定投资2亿多美元开展大数据研究.大数据将改变人们的生活.工作和思维方式,就科学研究来说,大数据将引发科学研究范式的转变. 一.大数据时代的科学研究范式及其对比较教育研究的挑战 "范式"(Paradigm)是由科学哲学家托马斯·库恩(Thomas

数据库设计三大范式

数据库设计范式 什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系.所以建立科学的,规范的的数据库是需要满足一些 规范的来优化数据数据存储方式.在关系型数据库中这些规范就可以称为范式. 什么是三大范式: 第一范式:当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF.满足第一范式是关系模式规范化的最低要 求,否则,将有很多基本操作在这样的关系模式中实现不了. 第二范式:如果关系模式R满足第一范式,并且R得所有非主属性都

mysql 无限级分类实现思路_Mysql

第一种方案: 使用递归算法,也是使用频率最多的,大部分开源程序也是这么处理,不过一般都只用到四级分类.这种算法的数据库结构设计最为简单.category表中一个字段id,一个字段fid(父id).这样可以根据WHERE id = fid来判断上一级内容,运用递归至最顶层. 分析:通过这种数据库设计出的无限级,可以说读取的时候相当费劲,所以大部分的程序最多3-4级分类,这就足以满足需求,从而一次性读出所有的数据,再对得到数组或者对象进行递归.本身负荷还是没太大问题.但是如果分类到更多级,那是不可取

sqlserver另类非递归的无限级分类(存储过程版)_MsSql

下面是我统计的几种方案: 第一种方案(递归式): 简单的表结构为: CategoryID int(4), CategoryName nvarchar(50), ParentID int(4), Depth int(4) 这样根据ParentID一级级的运用递归找他的上级目录. 还有可以为了方便添加CategoryLeft,CategoryRight保存他的上级目录或下级目录 第二种方案: 设置一个varchar类型的CategoryPath字段来保存目录的完整路径,将父目录id用符号分隔开来.比

【玩转数据系列十】利用阿里云机器学习在深度学习框架下实现智能图片分类

伴随着今日阿里云机器学习PAI在云栖大会的重磅发布,快来感受下人工智能的魅力. 一.背景 随着互联网的发展,产生了大量的图片以及语音数据,如何对这部分非结构化数据行之有效的利用起来,一直是困扰数据挖掘工程师的一到难题.首先,解决非结构化数据常常要使用深度学习算法,上手门槛高.其次,对于这部分数据的处理,往往需要依赖GPU计算引擎,计算资源代价大.本文将介绍一种利用深度学习实现的图片识别案例,这种功能可以服用到图片的检黄.人脸识别.物体检测等各个领域. 下面尝试通过阿里云机器学习平台产品,利用深度

【机器学习PAI实践十二】机器学习实现男女声音识别分类(含语音特征提取数据和代码)

背景 随着人工智能的算法发展,对于非结构化数据的处理能力越来越受到重视,这里面的关键一环就是语音数据的处理.目前,许多关于语音识别的应用案例已经影响着我们的生活,例如一些智能音箱中利用语音发送指令,一些搜索工具利用语音输出文本代替键盘录入. 本文我们将针对语音识别中最简单的案例"男女声音"识别,结合本地的R工具以及机器学习PAI,为大家进行介绍.通过本案例,可以将任何用户的语音数据标记出性别,并且保持高准确率.我们把整个实验流程切分为两部分,第一部分是声音信号的特征提取,通过R的信号处