【设计模式】前言
本专栏内容均引用《大话设计模式》并做适当修改,
起因
有部分计算机专业的学生或有一定经验的在职开发者,他们都知道类、方法、构造方法、甚至抽象类、接口等概念,并用各种IDE写过不少的Windows或Web程序,但是当问到为什么要用面向对象,它的好处在哪里,却没有人能完整的讲出来,多数人的反应是,概念知道的,就是表达不清楚。
针对于此,在第一章中,将会以中国古代四大发明中活字印刷的例子,通过一个虚构的三国曹操作诗的情景,把面向对象的几大好处讲解一下,这样比直接告诉面向对象有什么好处更加容易理解和记忆
本专栏读者
虽然本转来不是给无任何编程经验的人看的,对于想入这一行的朋友来说,找一门编程语言,从头开始或许才是正道,而此专栏也不太适合有了多年面向对象开发经验,对于常用的设计模式了如指掌的人看的,毕竟这里更多的是一些基础的东西
本专栏阅读方法
建议按顺序阅读,如果您感觉由于面向对象知识的匮乏,例如对继承、多态、接口、抽象类的理解不足,造成阅读上的困难,不妨先阅读附一的“培训实习生——面向对象基础”部分,然后再从第1章开始阅读。如果您已经对不少设计模式熟悉,也不妨挑选不熟悉的模式章节阅读。
关于本专栏的疑问解答
- 本书需要什么基础?
主要是C#或其他编程语言的基础知识,如变量、分支判断、循环、函数等编程基础,关于面向对象基础可参看本书的附录一。
- 设计模式是否有必要全部学一遍?
答案是,Yes!别被那些说什么设计模式大多用不上,根本不用全学的舆论所左右。尽管现在设计模式远远不止23种,对所有都有研究是不太容易的,在学习总结的23个设计模式过程中,你会被那些编程大师们进行伟大的技术思想洗礼,不断增加自己对面向对象的深入理解,从而更好的把这种思想发扬光大。这就如同高中时学立体几何感觉没用,但当你装修好房子购买家俱时才知道,有空间感,懂得空间计算是如何的重要,你完全可能遇到买了一个大号的冰箱却放不进厨房,或买了开关门的衣橱(移门不占空间)却因床在旁边堵住了门而打不开的尴尬。
重要的不是你将来会不会用到这些模式,而是通过这些模式让你找到“封装变化”、“对象间松散耦合”、“针对接口编程”的感觉,从而设计出易维护、易扩展、易复用、灵活性好的程序。成为诗人后可能不需要刻意地按照某种模式去创作,但成为诗人前他们一定是认真地研究过成百上千的唐诗宋词、古今名句。
如果说,数学是思维的体操,那设计模式,就是面向对象编程思维的体操。
- 我学了设计模式后时常会过度设计,如何办?
建议,暂时现象,继续努力。
设计模式有四境界:
1.没学前是一点不懂,根本想不到用设计模式,设计的代码很糟糕;
2.学了几个模式后,很开心,于是到处想着要用自己学过的模式,于是时常造成误用模式而不自知;
3.学完全部模式时,感觉诸多模式极其相似,无法分清模式之间的差异,有困惑,但深知误用之害,应用之时有所犹豫;
4.灵活应用模式,甚至不应用具体的某种模式也能设计出非常优秀的代码,以达到无剑胜有剑的境界。
不会用设计模式的人要远远超过过度使用设计模式的人,从这个角度讲,因为怕过度设计而不用设计模式显然是因噎废食。当你认识到自己有过度使用模式的时候,那就证明你已意识到问题的存在,只有通过不断的钻研和努力,你才能突破“不识庐山真面目,只缘身在此山中”的瓶颈,达到“会当凌绝顶,一览众山小”的境界。
编程语言
本专栏所使用的语言均为JAVA,但也同样适用其他一些面向对象语言的读者阅读来学习设计模式