呵呵,又是一个有潜力的帖子。赶紧来挂个名。
所谓面向对象,就是面向接口。如果程序很少用到interface,甚至没有用过interface,那么oo还没有入门。
面向对象,适合用来开发类库。做个小程序的话,也许确实不需要那么复杂。不过,有个小小建议,就是小程序,可以面向方法。标准很简单,每个方法的代码不超过15行,每个方法都不包含嵌套的分支和循环,就算成功。能做到这一点,才是合格的程序员。(不一定每次都要,但是必须能做到)
把类工厂模式真正搞明白了,oo就入门了。尤其是抽象工厂模式。(建议用c#来练习,不然会因为内存问题而困惑)
面向对象,就是面向接口,就是面向抽象,只考虑接口,不考虑细节。与接口耦合,而非与实现细节耦合。具体表现就是,作为一个类库,对外只暴露工厂和接口。类库的使用者,不知道实现类的细节,连类名都不知道,只知道通过工厂去取这么一个接口。这样的话,类库的修改,自然不会影响到使用类库的程序(客户)。
学oo要自己动手,培养独立思维能力。不要迷信教材,尤其是国内的。为什么看得头昏脑胀?因为作者自己说不定都没搞清楚。东抄一段,西抄一段,能读得通顺就不错了,你居然想理解。。。。呵呵,别把自己搞疯了。。。。
道可道,乃常道。说不清楚的东西,有很大可能性是糊弄人。
学oo,其实很简单。有一个办法,很容易就可以学会:消除代码的重复味道。假如发现任何两处代码有重复相似之处,就把他们合并到一处。慢慢就学会抽象了。先学会对方法的抽象,然后同时抽象一组方法,就成了接口。一切都是慢慢演变出来的。