[转]阎宏博士的JAVA与模式
阎宏,1964年出生于天津市。1987年毕业于中国科技大学近代物理系,1990年于中科院理论物理所获硕士学位,1992年获博士学位,翌年赴日本京都大学进行博士后研究工作。
作者曾于美国花旗银行(Citibank)、汤臣金融(Thomson Financial)、奥本海默基金(Oppenheimer)等处供职,进行了多年的软件开发、架构设计和技术管理工作。
阎宏博士对面向对象理论和设计模式有精到的见解,对中国的古典智慧也有深厚的积淀,更为难得的是能够把两者融洽地结合起来。阅读阎宏博士的文章,你会发现文章中处处闪烁着作者智慧的光点。阎宏博士著有《Java与模式》一书,本专栏编辑了阎宏博士的几篇文章和书中的一些章节,以飨读者。
您阅读后有什么感想,欢迎在JR论坛中发贴和大家讨论。同时,也可以与作者联系:JavaPatterns@hotmail.com。
1. 什么是模式
什么是模式,这是一个看上去简单,但是又非常不简单的问题。我见过很多人,学习模式理论已经很长时间了,但是并不真正理解这一点。
模式理论的基本思想其实起源于中国,是中国文化的固有思想。你,我,我们中每一个自幼受到中国思想熏陶的人,都自然具有这一基本思想。模式的思想存在于中国文化的各个角落,包括哲学、法律,医学,兵法,体育,文学,直到我们行为处事的方式。
模式的思想,长期以来不存在于西方思考方式中,至今也不是西方文化的主流思想。因此学习模式,切忌以西方式的思路学习。不然的话,缘木求鱼,事倍功半。
简单地讲,所谓模式,就是得到很好研究的范例。设计模式,就是设计范例。在孙子兵法中,充斥着各种模式。孙子说,“至于死地而后生”,就是战争模式。三十六计,条条都是模式,比如“走为上”,“空城计”也都是战争模式。
这些模式中的每一个都具有典型意义,具有学习价值。通过研究这些模式,学习者可以相互交流,可以在自己的实践中举一反三,推陈出新,加以应用。
在我们参加高考的时候,老师给我们很多的典型题目,作为练习使用。这些题目一般来说不会在高考中原封不动地出现,但是这些题目会有一些内容启发我们的思考,可以让我们举一反三,从而为考试做好准备。
模式不是框架(Framework),也不是过程。模式也不是简单的“问题的解决方案”,因为模式必须是典型问题的解决方案,是可以让学习者举一反三的,有研究价值、有交流价值,有自己的名字的例子。
模式不能套用。不要以为在任何一个系统中都要使用某些设计模式。系统的设计也不是含有设计模式就好,更不是含有越多的设计模式就越好。
在《三国演义》中,马恕就套用了“至于死地而后生”的战争模式,最后倒了大霉。在高考中,你如果把老师交给你的典型题目答案倒背如流,在一个个放到考试卷子上去,放得越多,恐怕你就离考上大学越远。
比如你喜欢三十六计,如果你在执行某项军事任务的时候,千方百计地将尽可能多的三十六计用到里面,每次都来一个“走为上”,那么你的朋友和敌人都会觉得某名奇妙。如果你非三十六计中的计谋不用,或者认为非三十六计中的策略不算好策略,那么别人只能认为你不懂三十六计的精髓。
中国传统医学也是一样,有时看上去症状相似的病,却要使用不同的处方,即所谓辨证用药。如果每次给病人看病,都要捧出某本医案,将尽可能多的著名医案用到你的病人身上,恐怕过不了多久就麻烦大了。
中国古代的法律,就是案例法;也就是需要法官在研习案例的基础之上,举一反三,适当发挥。开个玩笑,如果你喜欢上“轧美案”,逢美必轧,恐怕需要及早做好该行的准备。
关于模式的理论的起源、历史,以及模式理论与中国文化的渊源、哲学思想,设计模式背后的OO设计原则,二十几个设计模式的详细讲解,他们在Java语言中如何实现,如何在自己的系统设计中举一反三、推陈出新,以及Java语言本身使用了什么设计模式,可以看一看我的新书《Java与模式》(电子工业出版社出版)。
简单工厂(Simple Factory)模式
本文是作者的新书《Java与模式》的节选,主要内容如下:
第12章 简单工厂(Simple Factory)模式
12.1 工厂模式的几种形态
12.2 简单工厂模式的引进
12.3 简单工厂模式的结构
12.4 简单工厂模式的实现
12.5 简单工厂模式与其他模式的关系
12.6 模式的优点和缺点
12.7 简单工厂模式在Java中的应用
12.8 女娲抟土造人
请在下面打开pdf文件阅读本文
工厂方法(Factory Method)模式
本文是作者的新书《Java与模式》的节选,主要内容如下:
第13章 工厂方法(Factory Method)模式
13.1 引言
13.2 工厂方法模式的结构
13.3 工厂方法模式在农场系统中的实现
13.4 关于工厂方法模式的实现
13.5 Java语言中工厂方法模式的例子
13.6 工厂方法模式与其他模式的关系
13.7 女娲举绳造人
13.8 其他的例子
请在下面打开pdf文件阅读本文
抽象工厂(Abstract Factory)模式
本文是作者的新书《Java与模式》的节选,主要内容如下:
第14章 抽象工厂(Abstract Factory)模式
14.1 引言
14.2 问题
14.3 抽象工厂模式的结构
14.4 在什么情形下应当使用抽象工厂模式
14.5 抽象工厂模式在农场系统中的实现
14.6 抽象工厂模式的另一个例子
14.7 “开-闭”原则
14.8 关于模式的实现
14.9 女娲造万物的故事
请在下面打开pdf文件阅读本文
单例(Singleton)模式
本文是作者的新书《Java与模式》的节选,主要内容如下:
第15章 单例(Singleton)模式
15.1 引言
15.2 单例模式的结构
15.3 在什么情况下使用单例模式
15.4 单例类的状态
15.5 一个实用的例子:属性管理器
15.6 Java语言中的单例模式
15.7 专题:不完全的单例类
15.8 相关模式
15.9 附录:双重检查成例的研究
15.10 给读者的一点建议
请在下面打开pdf文件阅读本文
单例(Singleton)模式
单例模式与MX记录
本文是作者的新书《Java与模式》的节选,讲解如何将单例模式应用到实际系统设计中去,主要内容如下:
第16章 专题:单例模式与MX记录
16.1 问题与解决方案
16.2 目录服务与MX记录
16.3 JNDI架构介绍
16.4 如何使用JNDI编程
16.5 系统设计
16.6 讨论
请在下面打开pdf文件阅读本文
单例模式与MX记录
多例(Multiton)模式与多语言支持
本文是作者的新书《Java与模式》的节选,讲解多例(Multiton)模式以及如何将多例模式应用到实际系统设计中去,主要内容如下:
第17章 专题:多例(Multiton)模式与多语言支持
17.1 引言
17.2 多例模式
17.3 多语言项目的设计
请在下面打开pdf文件阅读本文
多例(Multiton)模式与多语言支持
序列键生成器与单例及多例模式
本文是作者的新书《Java与模式》的节选,讲解单例(Singleton)及多例(Multiton)模式以及如何将它们应用到实际系统设计中去,主要内容如下:
第18章 专题:序列键生成器与单例及多例模式
18.1 问题
18.2 将单例模式应用到系统设计中
18.3 将多例模式应用到系统设计中
18.4 讨论
请在下面打开pdf文件阅读本文
序列键生成器与单例及多例模式
《Java与模式》的目录
阎宏博士
《Java与模式》作者
www.WebEndsHere.com(或者http://218.6.168.109/jeffyan77)
JavaPatterns@yahoo.com
转自:http://www.uml.org.cn/sjms/sjms060801.htm
[转]阎宏博士的JAVA与模式的更多相关文章
- 《JAVA与模式》之观察者模式
转自:http://www.cnblogs.com/java-my-life/archive/2012/05/16/2502279.html 在阎宏博士的<JAVA与模式>一书中开头是这样 ...
- 《JAVA与模式》之单例模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述单例模式的: 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 单例模式的 ...
- 《JAVA与模式》之适配器模式(转)
在阎宏博士的<JAVA与模式>一书中开头是这样描述适配器(Adapter)模式的: 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能 ...
- 《JAVA与模式》之享元模式
<JAVA与模式>之享元模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述享元(Flyweight)模式的: Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨 ...
- 《JAVA与模式》之策略模式
<JAVA与模式>之策略模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述策略(Strategy)模式的: 策略模式属于对象的行为模式.其用意是针对一组算法,将每一个算法 ...
- JAVA策略模式
<JAVA与模式>之策略模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述策略(Strategy)模式的: 策略模式属于对象的行为模式.其用意是针对一组算法,将每一个算法 ...
- (转)《JAVA与模式》之模板方法模式
该文章转自:http://www.cnblogs.com/java-my-life/archive/2012/05/14/2495235.html 在阎宏博士的<JAVA与模式>一书中开头 ...
- 《JAVA与模式》之单例模式 [转]
在阎宏博士的<JAVA与模式>一书中开头是这样描述单例模式的: 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 单例模式的 ...
- Java策略模式(Strategy模式) 之体验
<JAVA与模式>之策略模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述策略(Strategy)模式的: 策略模式属于对象的行为模式.其用意是针对一组算法,将每一个算法 ...
随机推荐
- 一页纸商业计划书 (Business Plan) 模板(转载)
本文转载自:https://blog.eood.cn/business-plan 假如你也有一个 idea ,但是还处于想法阶段,这个商业计划书模板能够帮你理清思路. 这个一页 BP 模板简单实用,分 ...
- DDD领域驱动设计之运用层代码
1.DDD领域驱动设计实践篇之如何提取模型 2.DDD领域驱动设计之聚合.实体.值对象 3.DDD领域驱动设计之领域基础设施层 4.DDD领域驱动设计之领域服务 5.整体DEMO代码 什么是运用层,说 ...
- HBase中MVCC的实现机制及应用情况
MVCC(Multi-Version Concurrent Control),即多版本并发控制协议,广泛使用于数据库系统.本文将介绍HBase中对于MVCC的实现及应用情况. MVCC基本原理 在介绍 ...
- 第八章xml学习
1.ASP.NET和JSP的关系 ASP.NET 和JSP都是用来开发动态网站的技术,只不过ASP.NET是通过c#语言来操作的, 而JSP是通过Java语言来操作的. 2.为什么学习XML? 01. ...
- django orm总结
目录1.1.1 生成查询1.1.2 创建对象1.1.3 保存修改的对象1.1.4 保存 ForeignKey 和 ManyToManyField 字段1.1.5 检索对象1.1.6 检索所有的对象1. ...
- atitit.提升备份文件复制速度(3) ----建立同步删除脚本
atitit.提升备份文件复制速度(3) ----建立同步删除脚本 1. 建立同步删除脚本两个方法.. 1 2. 1从回收站info2文件... 1 3. 清理结束在后snap比较 1 4. Npp ...
- Eclipse连接到My sql数据库之前操作
Eclipse连接到My sql数据库之前操作 1:首先是安装My sql数据库(为了减少你的麻烦,按照下面的连接,下载即可)百度云链接:http://pan.baidu.com/s/1mitWmbm ...
- Shell脚本学习入门(一)
1.Shell脚本是解释型的语言. 2.Shell脚本建立的基本步骤: 3.Shell脚本文件的第一行一般可以是:"#! 路径名 -(选项)", 为了要使Shell脚本有移植性,请 ...
- 在dos中运行java程序,若出现Exception in thread “main" java.lang.NoClassDefFoundError
在dos中运行java程序,若出现Exception in thread “main" java.lang.NoClassDefFoundError,可以检查一下几项: 环境变量配置: 注意 ...
- PHP学习计划