我走过路可能不适合你, 如何让初学者更快地掌握OO思想也是我一个研究项目,因为我也搞培训.
所以,你得问题也比较难倒我,有一个强制办法:在项目实践中强行使用GoF设计模式,以使自己了解设计模式,再和别人讨论.
为什么推荐从Gof设计模式这个高难度知识入手呢?因为OO思想是一个说了也白说得问题,过去我用禅来打比喻,OO思想是无法象1+1=2那样传授告诉别人得,必须每个人自己体会,那么体会得实践是什么?就是自己在项目中开始有意识使用设计模式.
下面一步就是使用Struts Hibernate之类正宗对象框架,特别是持久层,摆脱数据库得影响,以前我说数据库时代过去了,就是这个意思,为什么搞Swing等图形程序员容易接受OO,因为他们没有关系数据库干扰,而搞J2EE得则经常被数据库和过去数据库编程经验干扰,围绕数据库编程容易导致过程编程,这些都是与OO格格不入的.
关系数据库与OO存在天然阻抗,也就是不匹配,所以我们要使用O/R mapping如Hibernate之类框架来培养帮助我们对抗数据库的干扰,当你知道什么是OO后,再使用JDBC,这时你心目中的JDBC就是顺服于OO思想下的工具了,而不是主导你破坏你OO思想的恶魔.
数据库时代的终结 http://www.jdon.com/artichect/dbover.htm
总之,要走上OO,需要彻底摆脱过去经验对自己的干扰,因为我们国内大学的软件教育基本都是过程化编程思路,自己走上工作岗位后,又都是自觉学习,这些都其实不是OO,这些知识和经验会干扰OO思想的形成,要和他们做斗争,驱赶他们.说白了,就是与自己进行痛苦斗争,蜕变是一个痛苦过程,尤其是思想方法,所以做到的人很少.
坚持下来的人,达到OO彼岸的,唯有真正对软件热爱和有兴趣的.所以考验你是否走上OO思想,就看你的兴趣和毅力.
很多人说搞Java苦啊,其实也是反映这个艰苦历程.
其实,在这个过程中,需要经常和别人讨论,J道等论坛提供这样场所,我们经常看到很多人在论坛讨论技术秘籍问题,而很少提及设计问题,怎么设计好,如何建立一个对象,对象边界在哪里,这些讨论语言包括在J道论坛都很少看到,这只能说明一个问题.....
Evans DDD其实将对象如何建立这个基本问题进行了总结,就如GoF设计模式总结了23个模式一样,这些需要我们不断讨论....
|
|