《Delphi模式编程》是一本Delphi程序员的模式入门和实践读物。该书用最通俗易懂的语言和最明白实用的范例解说深奥睿智经典著作《设计模式》。该书不但围绕23个经典的设计模式进行解说,介绍其结构和用法,并给出模式编程的实践范例;还进一步阐述了模式的概念,深入讨论了Delphi的模式编程机制和模式编程法则。\r\n 该书适合有编程经验的Delphi程序员,以及有志从事系统设计和架构,不断挑战自我发展空间的软件开发人员阅读。该书还可以作为研究生和高级开发人员的培训教材。当然也可以将此书作为一本模式编程参考手册,便于读者在项目开发中遇到实际的设计问题时直接查阅。\r\n 本书的其它相关资源和技术支持,可以在作者的个人网http://www.liu-yi.net上获得。\r\n \r\n \r\n \r\n \r\n \r\n
第一部分 模式编程原理 \r\n 第1章 模式概述 \r\n 1.1 模式的概念 \r\n 1.1.1 什么是模式 \r\n 1.1.2 模式可以做什么 \r\n 1.2 模式与架构 \r\n 1.2.1 什么是架构 \r\n 1.2.2 架构和模式的关系 \r\n 1.3 从面向对象编程到模式编程 \r\n 1.3.1 关于封装的哲学 \r\n 1.3.2 利用继承实现变化的封装和简单的复用 \r\n 1.3.3 借助模式封装多个变化 \r\n 1.3.4 模式帮助我们解决问题 \r\n 第2章 Delphi的模式编程机制 \r\n 2.1 对象模型机制 \r\n 2.1.1 对象模型 \r\n 2.1.2 对象建模和模式编程 \r\n 2.1.3 对象关系与复用 \r\n 2.2 动态绑定机制 \r\n 2.2.1 方法绑定 \r\n 2.2.2 虚方法 \r\n 2.2.3 多态 \r\n 2.3 类型转换机制 \r\n 2.3.1 类型 \r\n 2.3.2 向上转型 \r\n 2.3.3 向下转型 \r\n 2.4 接口抽象机制 \r\n 2.4.1 接口的概念 \r\n 2.4.2 抽象类 \r\n 2.4.3 对象接口 \r\n 2.4.4 抽象类与对象接口的比较 \r\n 2.4.5 针对接口而不是针对实现编程 \r\n 第3章 模式编程法则 \r\n 3.1 开闭法则(OCP) \r\n 3.2 Liskov代换法则(LSP) \r\n 3.3 依赖反转法则(DIP) \r\n 3.4 接口隔离法则(ISP) \r\n 3.5 单一职责法则(SRP) \r\n第二部分 创建型模式编程 \r\n 第4章 工厂方法模式(Factory Method) \r\n 4.1 模式解说 \r\n 4.2 结构和用法 \r\n 4.2.1 模式结构 \r\n 4.2.2 代码模板 \r\n 4.2.3 问题讨论 \r\n 4.3 范例与实践 \r\n 4.3.1 利用工厂方法模式设计可动态切换持久层机制的应用 \r\n 4.3.2 范例小结 \r\n 第5章 抽象工厂模式(Abstract Factory) \r\n 5.1 模式解说 \r\n 5.2 结构和用法 \r\n 5.2.1 模式结构 \r\n 5.2.2 代码模板 \r\n 5.3 范例与实践 \r\n 5.3.1 用抽象工厂模式动态构造界面风格 \r\n 5.3.2 WebSnap的Web Module架构与抽象工厂模式 \r\n 5.3.3 范例小结 \r\n 第6章 建造者模式(Builder) \r\n 6.1 模式解说 \r\n 6.2 结构和用法 \r\n 6.2.1 模式结构 \r\n 6.2.2 代码模板 \r\n 6.3 范例与实践 \r\n 6.3.1 一个数据集对象产品的建造者模式 \r\n 6.3.2 范例小结 \r\n 第7章 单例模式(Singleton) \r\n 7.1 模式解说 \r\n 7.2 结构和用法 \r\n 7.2.1 模式结构 \r\n 7.2.2 代码模板 \r\n 7.2.3 Delphi对象构造机制与单例模式 \r\n 7.3 范例与实践 \r\n 7.3.1 一个共享数据库连接的单例模式范例 \r\n 7.3.2 范例小结 \r\n 第8章 原型模式(Prototype) \r\n 8.1 模式解说 \r\n 8.2 结构和用法 \r\n 8.2.1 模式结构 \r\n 8.2.2 代码模板 \r\n 8.3 范例与实践 \r\n 8.3.1 Delphi对象的克隆 \r\n 8.3.2 用原型模式克隆字体 \r\n 8.3.3 Delphi对象流化与原型模式 \r\n 8.3.4 范例小结 \r\n 第9章 适配器模式(Adapter) \r\n 9.1 模式解说 \r\n 9.2 结构和用法 \r\n 9.2.1 类的适配器模式 \r\n 9.2.2 对象的适配器模式 \r\n 9.2.3 问题讨论 \r\n 9.3 范例与实践 \r\n 9.3.1 用适配器模式包装第三方API的范例 \r\n 9.3.2 范例小结 \r\n 第10章 桥接模式(Bridge) \r\n 10.1 模式解说 \r\n 10.2 结构和用法 \r\n 10.2.1 模式结构 \r\n 10.2.2 代码模板 \r\n 10.3 范例与实践 \r\n 10.3.1 使用桥接模式改进数据持久层的健壮性 \r\n 10.3.2 基于桥接模式的一个数据视图程序 \r\n 10.3.3 范例小结 \r\n 第11章 合成模式(Composite) 2\r\n 11.1 模式解说 \r\n 11.2 结构和用法 \r\n 11.2.1 模式结构 \r\n 11.2.2 代码模板 \r\n 11.2.3 问题讨论 \r\n 11.3 范例与实践 \r\n 11.3.1 合成模式在组织机构管理系统中的应用 \r\n 11.3.2 范例小结 \r\n 第12章 装饰者模式(Decorator) \r\n 12.1 模式解说 \r\n 12.2 结构和用法 \r\n 12.2.1 模式结构 \r\n 12.2.2 代码模板 \r\n 12.2.3 问题讨论 \r\n 12.3 范例与实践 \r\n 12.3.1 装饰者模式在图片观赏器中的应用 \r\n 12.3.2 范例小结 \r\n 第13章 门面模式(Facade) \r\n 13.1 模式解说 \r\n 13.2 结构和用法 \r\n 13.2.1 模式结构 \r\n 13.2.2 代码模板 \r\n 13.2.3 问题讨论 \r\n 13.3 范例与实践 \r\n 13.3.1 门面模式和分布式系统的设计优化 \r\n 13.3.2 用门面模式设计的COM+银行转账系统 \r\n 13.3.3 COM+银行转账系统实现代码剖析 \r\n 13.3.4 范例小结 \r\n 第14章 享元模式(Flyweight) \r\n 14.1 模式解说 \r\n 14.2 结构和用法 \r\n 14.2.1 模式结构 \r\n 14.2.2 代码模板 \r\n 14.2.3 问题讨论 \r\n 14.3 范例与实践 \r\n 14.3.1 对象池技术和享元模式 \r\n 14.3.2 享元模式在任务调度系统中的应用 \r\n 14.3.3 范例小结 \r\n 第15章 代理模式(Proxy) \r\n 15.1 模式解说 \r\n 15.2 结构和用法 \r\n 15.2.1 模式结构 \r\n 15.2.2 代码模板 \r\n 15.3 范例与实践 \r\n 15.3.1 代理模式在数据库程序中的应用 \r\n 15.3.2 范例小结 \r\n第四部分 行为型模式编程 \r\n 第16章 责任链模式(Chain of Responsibility) \r\n 16.1 模式解说 \r\n 16.2 结构和用法 \r\n 16.2.1 模式结构 \r\n 16.2.2 代码模板 \r\n 16.2.3 问题讨论 \r\n 16.3 范例与实践 \r\n 16.3.1 责任链模式在项目审批系统中的应用 \r\n 16.3.2 责任链模式对代码的重构 \r\n 16.3.3 范例小结 \r\n 第17章 命令模式(Command) \r\n 17.1 模式解说 \r\n 17.2 结构和用法 \r\n 17.2.1 模式结构 \r\n 17.2.2 代码模板 \r\n 17.2.3 问题讨论 \r\n 17.3 范例与实践 \r\n 17.3.1 Delphi的Action编程机制与命令模式 \r\n 17.3.2 一个兼有撤销重做功能的文本编辑器范例 \r\n 17.3.3 范例小结 \r\n 第18章 解释器模式(Interpreter) \r\n 18.1 模式解说 \r\n 18.2 结构与用法 \r\n 18.2.1 模式结构 \r\n 18.2.2 代码模板 \r\n 18.3 范例与实践 \r\n 18.3.1 一个罗马数字到阿拉伯数字的转换器程序 \r\n 18.3.2 范例小结 \r\n 第19章 迭代子模式(Iterator) \r\n 19.1 模式解说 \r\n 19.2 结构与用法 \r\n 19.2.1 模式结构 \r\n 19.2.2 代码模板 \r\n 19.2.3 问题讨论 \r\n 19.3 范例与实践 \r\n 19.3.1 一个基于迭代子模式的图片播放器 \r\n 19.3.2 范例小结 \r\n 第20章 中介者模式(Mediator) \r\n 20.1 模式解说 \r\n 20.2 结构与用法 \r\n 20.2.1 模式结构 \r\n 20.2.2 代码模板 \r\n 20.2.3 问题讨论 \r\n 20.3 范例与实践 \r\n 20.3.1 中介者模式在聊天室系统中的应用 \r\n 20.3.2 范例小结 \r\n 第21章 备忘录模式(Memento) \r\n 21.1 模式解说 \r\n 21.2 结构与用法 \r\n 21.2.1 模式结构 \r\n 21.2.2 代码模板 \r\n 21.2.3 问题讨论 \r\n 21.3 范例与实践 \r\n 21.3.1 备忘录模式在地理信息系统中的应用 \r\n 21.3.2 范例小结 \r\n 第22章 观察者模式(Observer) \r\n 22.1 模式解说 \r\n 22.2 结构与用法 \r\n 22.2.1 模式结构 \r\n 22.2.2 代码模板 \r\n 22.2.3 问题讨论 \r\n 22.3 范例与实践 \r\n 22.3.1 观察者模式在界面色彩主题中的应用 \r\n 22.3.2 范例小结 \r\n 第23章 状态模式(State) \r\n 23.1 模式解说 \r\n 23.2 结构与用法 \r\n 23.2.1 模式结构 \r\n 23.2.2 代码模板 \r\n 23.2.3 问题讨论 \r\n 23.3 范例与实践 \r\n 23.3.1 状态模式在信用卡账户管理系统中的应用 \r\n 23.3.2 范例小结 \r\n 第24章 策略模式(Strategy) \r\n 24.1 模式解说 \r\n 24.2 结构与用法 \r\n 24.2.1 模式结构 \r\n 24.2.2 代码模板 \r\n 24.2.3 问题讨论 \r\n 24.3 范例与实践 \r\n 24.3.1 策略模式在酒店管理系统中的应用 \r\n 24.3.2 范例小结 \r\n 第25章 模板方法模式(Template Method) \r\n 25.1 模式解说 \r\n 25.2 结构与用法 \r\n 25.2.1 模式结构 \r\n 25.2.2 代码模板 \r\n 25.2.3 问题讨论 \r\n 25.3 范例与实践 \r\n 25.3.1 模板方法在离线数据库系统中的应用 \r\n 25.3.2 范例小结 \r\n 第26章 访问者模式(Visitor) \r\n 26.1 模式解说 \r\n 26.2 结构与用法 \r\n 26.2.1 模式结构 \r\n 26.2.2 代码模板 \r\n 26.2.3 问题讨论 \r\n 26.3 范例与实践 \r\n 26.3.1 访问者模式在薪酬福利管理中的应用 \r\n 26.3.2 范例小结 \r\n主要参考文献:
刘艺,海军工程大学信息与电气学院副教授,美国Borland公司授予的Delphi产品专家,计算机技术作家。著有《Delphi面向对象编程思想》等10多部计算机专著,出版重点大学计算机教材2部,其中一部获教育部推荐研究生教材。另外,其主持的多个科研项目曾在军内获奖。
本书经过多年的酝酿和一年多的艰难写作终于完稿了。这本书最初仅仅是我本人学习模式的一个私人笔记,所以使用《ThinkinginPatternswithDelphi》的英文名称可能更为准确。
本书第一部分“模式编程原理”,阐述了模式的概念,深入讨论了Delphi的模式编程机制和模式编程法则;后面各部分则分别围绕23个经典的设计模式进行解说,介绍其结构和用法,并给出模式编程的实践范例。
对于有编程经验的Delphi程序员来说,阅读本书并不困难。书中的例子他们大都很熟悉,只不过以前可能没有用模式编程的方式实现过。在比较不同的思考问题的方法和解决问题的途径后,我相信他们会有“于我心有戚戚焉”的感受。在理解模式的基础上,如果进一步深入阅读本书的第2章“Delphi的模式编程机制”和第3章“模式编程法则”将会有更高层次的收获。
诚恳地讲,这部书并不适合初学者阅读,甚至不适合没有建立面向对象概念和不了解面向对象编程的读者阅读。不过初学者可以先积累一些编程实践经验,并通过阅读本人的《Delphi面向对象编程思想》来建立面向对象的思维方式。然后,尝试阅读本书中一些较为简单和常用的模式,例如:工厂方法模式、策略模式等。
本书的结构是松散的,各个模式相对独立,自成一章。强烈建议读者在阅读时,先跳过那些你们认为难读的章节和暂时用不上的模式。我并不是说这些章节不重要,而是说最后再回过头来阅读这些章节效果会更好!
当然也可以将此书作为一本模式编程参考手册,便于读者在项目开发中遇到实际的设计问题时直接查阅相关章节,而不需阅读全书。
本书的光盘中包含了书中绝大多数示例程序的源代码,并在Delphi 7上调试通过。
本书的其他相关资源和技术支持,可以在我的个人网站和博艺论坛上获得:http://www.1iu-yi.net。另外,感兴趣的个人和单位亦可直接和我本人联系相关的培训。
由于本人水平有限,加之可能的笔误,书中难免会有疏漏之处。为此我在博艺论坛(http://www.1iu-yi.net/bbs/index.asp)上开辟了《Delphi模式编程》讨论版,欢迎大家及时把勘误意见贴在上面,以便在重印时修订。
最后要感谢邵印中为本书所做的校对工作,感谢周赛锋为本书提出了很好的建议,感谢段立、罗宾、李启元、洪蕾、吴永逸、吴英、杨德刚、王远、刘霞、尹敬湘、刘藩、刘哲雨、罗勇、杜军在本书写作中给予的支持。如果没有家人、朋友、读者的厚爱,本书可能永远无法完成.
此外,还要衷心感谢多年来不断支持我技术写作的机械工业出版社华章分社,与他们合作是令人愉快的。
刘 艺
WWW.1iu-yi.net
2004年7月5日于南京