记得几个月前我开了一贴讨论面向对象思想,原帖在这
http://topic.csdn.net/u/20120110/10/e5c7361a-d2ff-462a-88a2-cf92cd261cd9.html
在这篇帖子里我当时对 依赖于接口而非依赖于实现 这句话理解并不是很深刻,通过大家的回帖收获挺多
当时我觉得是实践没有跟上,随即又发了一贴关于 面向对象理论和实践的贴子
http://topic.csdn.net/u/20120118/15/a677c0c4-1343-43e1-aa22-31de005a0f5b.html
最近刚刚做完一个项目,重构代码的过程中我刻意去结合设计模式,确实体会比较大,所以今天总结一下,
再开一贴探讨面向对象思想
-------------------------------------------------------
对于一般的应用程序,框架都是不用自己设计的,我最近写一个应用程序,框架就用的MFC的单文档,那么面向对象体现在哪里?
MFC本身就是MVC架构下的一个框架,一般的应用程序也都是基于这个架构,程序员要做的是抽象出数据和控制以及显示,说白了也就是对M,V,C三个方面分别进行抽象,抽象M和抽象C是超脱于这个框架的,分别对应于抽象数据结构和抽象界面控制,另外抽象V也就是抽象视图,这个与框架是相关,也称为抽象显示方式
然后是M,V,C三者之间的关联,这是很重要的问题,这个在UML和模式应用这本书里面称为GRASP,如何去分配他们的职责,这本书介绍是以职责驱动的方式来划分。(这本书相当不错,通过一个完整的应用程序系统教你如何去做对象分析和对象设计)。
以上是我对mvc架构的理解,适用于一切基于这种架构的应用程序。
--------------------------------------------------------
当然这种抽象方式同样适用于不带框架的应用程序,关键并不是什么框架,而是要有对象思想,设计任何系统需要考虑的是用对象来完成系统操作。这点通过应用设计模式和重构能够不断加深认识。
如果现在让我对面向对象下个定义:那就是一种思考问题的方式,这种方式是建立在对象基础之上的。
昨天看到CSDN来了牛人了,于是我赶忙问了个问题
to专家李健:
我想问的问题是:
对于一个软件项目应该从什么样的角度去规划它呢?
在需求和系统分析做好的情况下如何去做对象分析呢?
如何去分配一个对象的职责呢?从什么角度去划分对象职责比较有效呢?
尽管这些我都看过书,但是我还是希望听听你的意见啊
面向对象的思想是很容易有,他只是一种思考方式,你换过来就行,难在对象分析和对象设计上,难在设计良好的可复用面向对象应用程序上。
这点我到是想听听牛人的意见。大家有什么想法尽管说吧,希望这个帖子对大家有用。