漫谈设计模式:从面向对象开始
模式引入计算机科学领域已经有20余年了,最初人们侧重于面向对象的设计,而现在已经应用于计算机领域的各个方面,它们对计算机产生了深远影响。
若想一本书涵盖所有模式,那么这本书将会非常庞大,以前的设计模式书籍专注于介绍设计模式,虽然读者了解了这些设计模式,但是仍然不知道如何合理地使用它们,往往导致读者为了使用设计模式而设计,而不是从问题出发,使用设计模式优雅地解决这些问题。
本书主要从最基本的设计模式入手,并结合一些J2EE开发过程经常遇见的技术和概念,你将全面理解这10多个设计模式,并在开发过程中,让你真正体会和思考面向对象编程的思想,也只有掌握这些,你才会能成为一位真正的设计专家。
本书不是一本面向对象和Java语言的入门书籍,阅读对象主要是从事Java语言的软件开发人员但不限于Java语言的开发人员。
OOP(Object-Oriented Programming)早已不是一个新概念了,OOP在最近的20多年里发展得异常迅猛,特别是近10年里,OOP相关技术层出不穷,当大家热衷于使用这些新技术时,却不会使用OOP进行软件设计,进而发现新的技术并没有为大家带来任何好处。
很多老的开发人员从过程式开发转向面向对象的开发过程中,由于他们习惯过程式思维的开发,尽管他们使用的是OOP语言,但这并没有给他们带来太多帮助,反而使他们更加厌倦OOP软件开发,认为OOP没有想象中的那么便捷,很多地方没有使用过程式开发来的便捷,于是他们又退化为过程式的开发。
随着越来越多的新开发人员也加入了OOP的潮流,他们追求新的技术,学会使用各种工具和框架,却无暇顾及OOP进行开发设计的核心思想。虽然使用了新技术,代码质量并未提高,反而事与愿违。
当他们沉浸在新技术的使用和业务逻辑的编码实现时,未料到这些看似巧妙的设计导致了代码不易阅读、不易维护、不易扩展、不易测试、不易调试……。大家忙忙碌碌,但是项目进度缓慢,最终往往以失败而告终。归根结底,尽管使用了OOP语言开发其他一些新技术,但对OOP只限于粗浅的了解和相关语言语法使用上的理解,并不会真正使用OOP进行开发设计,以致使用时颠三倒四,未能真正享受到OOP和这些新技术带来的好处,有些新技术非但没有提供帮助,反而成为某些软件失败的罪魁祸首。那么,如何使用OOP进行开发设计呢?
OOP开发新手由于没有这方面的设计经验,在遇到问题时,往往诉求于逻辑的实现,在维护性和扩展性没有考虑或者少有考虑,导致代码乱七八糟,七零八散,随着开发的深入,最终在用户各种各样的需求面前无以应对。而有经验的OOP开发人员会灵活使用各种模式做出优秀的设计,编写的代码健壮性高,易于阅读、维护和扩展,可伸缩性强,开发成本也十分低廉。如果重用他们的开发经验,那么你就不需要在相同问题上重蹈覆辙,也能设计出优秀的软件。
市面上介绍设计模式的书籍非常多,它们一般仅仅给出GoF的23个最基本的设计模式的定义和一些简单的示例,大多数读者充其量只能了解它们,在使用上大打折扣。
本书精心筛选出了一些我们经常在开发设计过程中使用到的模式,使用OOP的眼光分析它们,适时结合一些流行J2EE框架和技术,并从横向和纵向两方面扩展读者的思维,使读者对这些常用的模式有一个全面深刻的认识,也希望能够为正在使用这些框架和技术的读者带来帮助。