面向对象设计是一个迭代的过程
要设计一个OO解决方案,一次就设计出最适合的解决方案是不可能的。就像系统,软件不需要维护,系统不需要打补丁一样,多么的难以置信。
对于最后一句话,我不太明白【尝试解决一个问题时,不要试图遵照任何标准或约定,因为关键是要有创造性】,不要遵照标准,那么有那么多面向对象设计模式有什么用?(希望各位博友看到的话指点我一二)。首先明白什么是接口什么是实现。我觉得这个取决与参考对象。如果面对一个类,那么接口就是类的公共属性和方法,实现就是类内部的一个私有属性和方法。如果是一个播放器,接口就是播放器的按钮与使用方法,实现就是播放器内部如何对媒体进行读取解码输出。接口是我们对于一个对象是唯一知道的东西,也是我们唯一关心的问题。就像我们使用一个播放器的时候,我只想知道我要如何使用这个播放器播放我要看的视频,对于播放器内部的实现我不会关心。我在猪八戒威客网接了一个订单,客户需要的就是你按照他的要求全部完成,对于你是怎样完成的他不会关心。
设计的时候要使用抽象思维,尽可能为用户提供最少接口。这个需要我们把使用这个对象的用户想象成是一个非常聪明的人,你只要大概把你想它完成的事情说一下,它就能完成。就像老板就要准备明天XX会议的资料,老板的命令就这么多,然后准备会议资料的过程就要你自己解决了。我们设计OO解决方案的时候也要像老板向员工发布任务一样,将任务说的抽象一些,不要跟员工你到哪里哪里寻找相关信息,任何怎样怎样整理,等等。因为面向对象的一大特点就是代码重用非常的强,我们的进行设计的时候必须把这个特点表现出来。如果老板跟员工之间的接口就是“准备明天XX会议资料”,那么后天,其他会议也需要资料的时候,老板就可以继承上次的工作,根据接口直接下达任务。如果老板与员工之间的接口是“员工你到哪里哪里寻找相关信息,任何怎样怎样整理,等等”,会议内容变了,那么老板跟员工下达任务的时候又要再说一遍恶心的到那里OOXX....
原来在设计OO解决方案的时候还有一个因素需要考虑,就是『环境约束』计算机硬件可能限制软件的功能。例如:一个系统可能无法连接到网络,或者一个公司可能使用某种特性类型的打印机。
----------
昨天一个晚上都没睡好,整晚感觉自己都没入睡一样。不知道这是不是大家所说的失眠呢。国庆放完假回到学校的时候被饮水机的热水烫到,整只左小腿当时全红,辛辛苦苦冲了半个多小时冷水,熬过3个因为细胞的重生产生的痒痒的知觉不能睡好的晚上,今日算完全好了,前几天开始掉皮。今天晚上再努力,看能不能把第3章看完,这个学期现在已经第8周了,过了差不多一半,我的毕业设计的进度要尽量加快了。那本面向对象理念的书要尽快读完,好进入下一个阶段。
加油吧。