模式——工程化实现及扩展(设计模式Java 版)


--

模式——工程化实现及扩展(设计模式Java 版)

王翔,孙逊著

ISBN 978-7-121-15638-0

20124月出版

定价:59.00

16

416

设计模式不是一门适合空谈的技术,它来自于开发人员的工程实践又服务于工程实践。

本书并不是一本面向入门者的读物,因为它需要结合工程实践介绍如何发现模式灵感、如何应用模式技术。不过作为一本介绍设计模式的书,它并不需要读者对于庞大的JDK有深入了解,因为扩展主要是结合Java语法完成的,配合书中的实例,相信读者不仅能够熟练应用设计模式技术,也能令自己的Java语言上一个台阶。

为了降低学习门槛,本书第一部分除了介绍面向对象设计原则外,还充实了一些Java语言的介绍,但这些内容并不是枯燥的讲解,读者可以在阅读中通过一系列动手练习尽快吸收这些理论并将它们转化为自己的技能。本书最后一部分的“GOF综合练习把各种设计模式做了一次集中展示,目的是让读者把分散的模式知识融合在一起,能够将书本知识真正用于改善一个生产型模块的实现。

本书内容生动,示例贴近中型、大型项目实践,通过一个个四两拨千斤的示例练习可以让读者有一气读完的兴趣。

 

如同每个人都有其个性一样,每种开发语言也有自己的特点。

项目中,我们固然可以机械地将一种语言的开发经验套用到另一种语言中,但效果不一定好,因为:

    语言有自己的短处:用短处去实现需求不仅费时费力,结果也不理想。

    语言有自己的长处:为了沿用以前的经验而削足适履,没有用到语言的精要,结果暴殄天物。

相信读者也发现了,用一种语言写一个应用是一回事,写好一个应用则完全是另一回事,这就是工程化代码和玩具代码的区别。教科书上的知识落实到工程上时不能按图索骥,需要考虑开发语言和目标环境,设计模式也不例外。

也许读者会觉得本书中很多实现方式与《设计模式》介绍的内容不一致,这是因为《设计模式》一书出版至今已近20年,其间无论是开发语言还是技术平台均已经换了人间GOF 23个模式的思想不仅影响着我们,更影响着走在技术前沿的语言设计者、平台设计者,他们也在工作中潜移默化地把模式思想融入自己的工作成果,作为用户,我们推却别人的盛情,所有事情都从车轮做起,多少有点不经济。

作为本系列的Java设计模式分册,我试图用最Java的方式将自己对于设计模式的理解呈献给读者,而且实现上务求简洁、直接。结构上,本书分为5个部分:

1)第一部分:预备知识

包括面向对象设计原则中面向类的部分、Java语言面向对象扩展特性,以及JavaC#语法特性的简单对比。

2)第二部分:创建型模式

主要介绍如何创建对象,如何将客户程序与创建过程的变化有效隔离。

3)第三部分:结构型模式

从静态结构出发,分析导致类型结构相互依赖的原因,通过将静态变化因素抽象、封装为独立对象的办法,梳理对象结构关系。

4)第四部分:行为型模式

从动态机制出发,分析导致类型调用过程的依赖因素,通过将调用关系、调用过程抽象、封装为独立对象的方法,削弱调用过程中的耦合关系。

5)第五部分:GOF综合练习

为了便于读者从整体上体会模式化设计思路和实现技巧,这部分通过一个综合性的示例向读者展示如何发现变化、抽象变化、应用模式并最终结合Java SE平台特性落地实现的过程。

不管之前对于模式是否有所尝试,我希望读者不妨浏览一下这些内容,毕竟模式思想转化为模式设计思路,再转化为模式应用技巧是一个渐进的过程,必须实际动手才会加深印象,然后才可能进一步开阔思路。本章示例设计上变化因素较多,需要三类模式的综合运用,务求能起到抛砖引玉的效果。

感谢多年培养、帮助我的领导和同事们,多年富有挑战、共同拼搏的项目经历使我能够完成这本书。

感谢我和我妻子共同的父母,他们一直给予我无私的关心和照顾,还教会我学会从生活中发掘无穷的技术灵感。

最后,感谢我挚爱的妻子,是她给予我直面挑战、战胜挑战的信心和力量。

受到自己开发年限和项目经验的限制,本书难免有疏漏和不足之处,希望能够听到您的批评和建议。

 

王翔                    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404257.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

由Qt中qApp想到的(这是单例模式么???)

From: http://blog.csdn.net/qq575787460/article/details/7880972 学Qt时,发现只要包含头文件QApplication或者QCoreapplication,就用使用qApp,指向一个当前实例。 查看源码发现qApp是个宏: QApplication中:#define q…

bootstrap基础学习十篇

bootstrap字体图标(Glyphicons) a.什么是字体图标 字体图标是在 Web 项目中使用的图标字体。虽然,Glyphicons Halflings 需要商业许可,但是您可以通过基于项目的 Bootstrap 来免费使用这些图标。 b.bootstrap自带字体图标文件结构…

Python 用hashlib求中文字符串的MD5值

From: http://blog.csdn.net/haungrui/article/details/6959340 使用过hashlib库的朋友想必都遇到过以下的错误吧:“Unicode-objects must be encoded before hashing”,意思是在进行md5哈希运算前,需要对数据进行编码。而且在不…

JS中的Replace方法

最近查一个bug,原因是JS中的Replace方法造成的,当将一个字符串中有处需要替换时,一般会用到JS中的Replace方法,Replace方法的第一个参数如果是传的字符串,只会替换第一处。代码如下: var str "0CEA65…

VMware 9 安装 Mac OS X 10.8 Mountain Lion 图文全程

From: http://unmi.cc/vmware9-install-mac-os-x-mountain-lion/#comment-8684 本教程是在 VMware 9 下安装当前最新版的 Mac OS X Mountain Lion 苹果系统。曾在 VirtualBox/VMware 下安装过 Mac OS Lion 系统,但安装后是无法升级到 Mountain Lion 的,所…

初识Vulkan

Vulkan是Khronos组织制定的“下一代”开放的图形显示API,是与DirectX12可以匹敌的GPU API标准。Vulkan是基于AMD的Mantle API演化而来,目前Vulkan 1.0标准已经完成并正式发布。上一代的OpenGL|ES并不会被遗弃,还会继续发展,很有可…

java_IO流之 NIO

NIO 定义 即新IO,在JDK1.4的java.nio.*包中引入,其目的在于提高速度。 在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个…

“我的电脑”右键“管理”打不开,提示“该文件没有与之关联的程序来执行该操作“

From: http://bbs.kafan.cn/thread-1240058-1-1.html 如图: 右键单击桌面上的“我的电脑”,再点“管理”就弹出这个对话框了。 【该文件没有与之关联的程序来执行该操作。请安装一个程序,或者,如果已安装程序,请在“…

[交流] 新手常见(五国)(-v图)错误解决(原版,破解kernel,补丁kext下载)

From: http://blog.csdn.net/ashuai81/article/details/8032952 原文出处:http://bbs.pcbeta.com/viewthread-863656-1-1.html 谢谢大神, 看了这个才弄出了黑苹果。 在可安装的主版硬件上,安装Mac不该是个大问题,声卡、显卡、…

四则运算题1

/*信息:20133075 张勋 《随机生成30道四则运算题目》要求:除整数外,还要支持真分数的四则运算设计思路: 1.通过radom函数生成自然数,给变量赋值 2.另一个变量是真分数,分子比分母小 3.随机生成四则运…

H264中的SPS、PPS提取与作用

From: http://blog.csdn.net/sunnylgz/article/details/7680262 牛逼的视频会议网站:http://wmnmtm.blog.163.com/blog/#m0 http://wmnmtm.blog.163.com/blog/static/38245714201192491746701/ 使用RTP传输H264的时候,需要用到sdp协议描述,其中有两项:Sequence Pa…

H264参数语法文档: SPS、PPS、IDR

From: http://blog.csdn.net/heanyu/article/details/6205390 H.264码流第一个 NALU 是 SPS(序列参数集Sequence Parameter Set) 对应H264标准文档 7.3.2.1 序列参数集的语法进行解析 SPS参数解析// fill sps with content of p[cpp] view plaincopyint …

React封装一个组件弹出框

目录 前言 代码 简要 引用 效果 前言 我是歌谣 放弃很容易 但是坚持一定很酷 为了保证react代码的一个简洁性 最近开始封装组件, 直接上代码 因为都很简单的模式 这边直接进行讲解 代码 //取消机构和取消讲师的方法封装 //params visible控制弹框的一个现实和隐藏 import…

Pytorch项目(模型训练与优化),肺癌检测项目之六

数据优化方案 数据优化方案1:重复抽样 (1)对多数类的样本实施欠采样,减少多数类数量 (2)对少数类的样本实施过采样,增加少数类数量 数据优化方案2:数据增强 数据增强&#xff08…

【数据库】SQL查询强化篇

查询是数据库的基本应用之一,oracle中的SQL查询语法,一方面遵循了SQL标准,另一方面又有自己的独特之处。 从而使得oracle中的SQL查询功能更加强大。接下来将会涉及oracle中的SQL查询语句,包括: 基本查询:主…

[python3] pyton socket 同步通信举例

本文比较简单,适合入门用,作个笔记,方便日后抄写 一个服务端,一个客户端,而且是阻塞方式,一次只能接受一个客户端连接并通信噢。 客户端发送‘bye, 结束与服务端的通信,如果发送’shutdown&…