设计模式之旅
记得刚入公司时,开始接触java语言,这也是我第一次接触面向对象语言,大概几个月后,在书店买了本<java与模式>,当时,感觉真的很不错,花了1个月时间,把书中列的设计模式蜻蜓点水式的一扫而过,感觉看完了以后,留给我的不是说我会用模式了,最多说是哪个简单的例子套用一些模式而已,但是对我看网上一些开源代码提供了很大的帮助。[主要是我比较笨,呵呵]
后来,从上海出差回来后,不需要加班,多了一些业余的时间,想c重新看看设计模式,不过我一看到这么厚的书,我就怕了,干脆在网上到处看别人写的东西,比较全的:http://www.jdon.com/designpatterns/index.htm 写的很简洁,
帮我节省了不少时间,不过说实在的,在这之前看过的书中,有2本书[重构、Effective java]感觉对所有喜欢java的人都应该看,即使你已经很牛了,你也应该买本珍藏[如果你的经济允许。不过我想,在中国做软件开发的至少买本书还不困难。]
其实,我感觉设计模式不是说你作为软件架构师才要玩的东西,它应该是一个基本的东西,任何一个做软件开发的人,如果你真的喜欢这个行业,那么你必须了解的东西,他是OO之路的智慧结晶;或许有的人说:”我做c的,好像没有必要“ ;其实,做c的怎么了,用c语言,你应该有面向过程的编成思想,当你了解了设计模式的时候,你能知道面向对象相比面向过程有哪些优缺点。也许当你了解了AOP时,你可以知道他相比面向多项有哪些优缺点;
入公司以来,我一直在用java,所以大多数时间在面向对象[但本人目前还是单身,郁闷!]。设计模式大体分为三类:对象创建模式、
对象的行为模式、对象的结构模式;但是我在系统设计时却很少用模式来设计,回头看看自己写过的代码,惊奇的发现很多时候在不知不觉中已经使用了某个模式,呵呵。但这样的情况并不多。另外一个原因:目前网上开源项目越来越多,各种优秀的框架也百花齐放。很多东西已经在我们负责的这个业务层看不到了,但如果你想研究研究那些优秀框架等的代码,你就应该把所有的模式都好好的了解。
不知道你是否接触过Spring这个优秀的框架,如果你在这个框架下工作,那么大多数对象的创建已经不需要你在代码中处理了。它通过xml配置文件,利用DI方式注入到你需要的地方。同时对于事务方面的处理,代理模式他也已经帮你作好了,你只需要配置上相关的事物,剩下的事都交给框架帮你处理。利用他的事件传播实现了观察者模式的功能。[这里想说一下,DI和IOC是有区别的,具体的看看我老大的blog: http://dreamhead.blogbus.com ]还有很多很多模式都被封装在其中。不过有些模式也是能用到的,比如单例模式[控制某些对象实例],命令模式[action中]、观察者模式[自动更新其他业务]、适配器模式[按自己需要加中间层]等等,相信你也是可以用到的。
其实,想真正的了解设计模式真的好难,我现在最多算是肤浅的知道常用的几个模式而已,真正值得你学习的是它解决问题的思想;
如果认真理解过模式,你会发现他们基本上是面向对象设计方法的基本概念的在解决问题时的优秀经验总结。比如他们会符合设计原则:
LSP,DIP,ISP,CARP等等。他们都是提倡面向接口编成,组合优先于继承,大多数模式的处理都通过增加中间层来处理等等。
我现在处于肤浅的模式了解中,我曾经问过比较牛的老同事,他们说你需要大量的联系,慢慢在设计过程中体会。当然我说的设计或编码不是指那种Copy;
对于大多想了解模式的朋友,最好先体会面向对象编程的思想,看看《重构》这样的书。我想只有当你知道了某个设计为什么不好时,你才能让他变得更好[如果你是一个软件爱好者!]。不要让那些优秀的框架挡住我们的眼睛!!!!