楼主还在上学?建议还是多练习,多犯错,只有自己用过笨方法,才能真正体会到好方法"究竟是怎么个好法儿",体会到"啊……哈……"的那一瞬间的惊喜
我来随便聊聊OO这东西,个人观点而已,希望不要影响其他的回贴者(虽然首贴回复一般都会有种导向作用)。
OO这东西,搞好了是挺趁手的工具,搞不好的话是一个讨厌的东西
多理解OCP,这是一切OO原则之母。建议过一段时间重思考一回:OCP到底是什么?
Uncle Bob的那本agile software development不错,得过jolt奖,有中文版,里面讲了不少OO的东西,用来一般程度地理解OO足够了。在OO方面,这本书只欠缺一点:没告诉你OO的局限性,更没有展现OO之外的N种漂亮手法。比如经典的例子:宇宙飞船和宇航员的"collide"方法,究竟写在哪个类里?如果再加上一块陨石参与碰撞呢?如果再加上太空垃圾呢?如果再加上金星人和水星人呢?
比BOB大叔更一般化的,推荐一本发明铁塔语言的那个Bertrand meyer老头儿的书:Object Oriented Software Construction 2nd Ed (虽然我没看完过,但也推荐)