您的位置:首页 > 其它

关于OO的一点理解

2013-08-01 11:02 246 查看
对于面向对象程序设计,可能一个人有一个人的理解,就连林锐博士也说自己无法解释什么是“面向对象”。凡事都有个过程,理解面向对象也是。目前自己写过的代码也就只有一万行左右,既然是有个过程,那么就早点开始这个过程,理解肯定是有偏颇的,甚至错误的,就当写给未来的自己。

面向对象要解决什么问题?

解决最大的我觉得就是应对需求的改变。如果需求确定,大家要的都一样,那么面向对象就意义不那么大了,用面向过程的方法就可以解决问题。当然面向对象也有一些其他优点,代码复用、测试方便、可以并行开发,但是我觉得面向过程如果设计的好也可以实现,网上有人说“只有深刻理解面向过程的人才可以深刻理解什么是面向对象”,有道理,真正的高手不是一朝一夕可以修成的。

什么是面向对象?

我的理解,找出变化的部分,为了应对变化的部分,职责转移。为了应对变化的部分也是面向对象要解决的问题,而“职责转移”可以当作方法,设计出来的每个类都有什么职责也是设计的关键(当然OOD不只是类的设计),大部分的设计模式都有职责转移的影子。

好像是在《设计模式精解》里面看到的一个例子,老师手上有一个表格,表格记录的是学生的姓名和学生要去哪里上课的记录,原始的方法是老师拿着单子,一条一条的念,老师比较累,老师当然不想了,于是老师把表格贴到墙上,让同学自己找自己要去哪个教室上课,然后老师拍屁股走人,这样就把查找教室的职责转移到学生身上了。有点像命令模式,也有点像观察者模式,当然并不是第一种方法一定不如第二种方法,而是要看具体什么地方会发生变化,如果查找教室的时候,老师要做的事情非常多,比如看这个名单每一条前需要老师的姓名、工号、工龄、履历、等等,那么这个方法与老师耦合紧,那么第一种方法比较合适。如果查看教室和老师没啥关系,而和学生的信息有关,并且需要学生的一些行为,那么这个职责最好是属于学生。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: