以下是我在用面向对象的方法进行软件设计时的一点感想和心得,写的有些随意,其中包含的观点或许有失偏颇,欢迎大家多提意见。
在采用面向对象(OO)的思想进行软件设计时,一个良好的设计往往源自于最初的一些简单动机:将对象的某些东西隐藏起来不被外界看到,将几个对象有效的隔离开使其耦合度降低,限定某个对象的职责让它做它该做的事情,……。她们存在于设计者的潜意识中,并发挥着作用。
而当你尝试将这些良好愿望贯彻到自己的设计中,直至最终的代码时,往往会遇到这样那样的困难。这使你不得不调整自己的初衷,或坚持,或部分改变,或彻底更换思路。这一过程常常是反复迭代的。找到问题的解决办法时,或许你会为自己的绝妙想法激动不已,而在修改了设计之后,当新的问题又出现的时候,你又不得不重新陷入痛苦的沉思之中。在这段被折磨的时间里,欢乐与痛苦并存,可能OO设计的乐趣也就在于此吧。最终,当你的设计被明确的固定下来并如实的被代码所体现的时候,这将会是一件令人兴奋的事情。
但事情可能还没有结束,随着产品的更新,用户需求的改变,你的设计在一次次的经受着严峻的考验。也许每次,你都将会对你的设计做出修正,以适应这些变化。但也正是这种修正的积累,在一点点腐蚀着你那最初自以为完美无缺的设计。这有点象饱受海浪拍打的岩石。遗憾的是,当你开始意识到这一点的时候,可能为时已晚。来自客户的压力,使你在每次修改设计的时候,都略显仓促和草率。这使你原先的那个杰作变得千疮百孔,你突然发觉,现在最新的设计较之原先的那个,已经偏离得很远了。早先的那些美好初衷,那些简单动机,在你最新的设计里,其体现已经不是那么清晰了。现在你也许已经顾不上什么优美的思路,简单的解法了,你能做的是尽力去补漏。这是一个恶性的循环,其痛苦的程度是逐渐递增的,直到最后,你精疲力尽地从那个圈里脱离出来。而你的设计大概只有两个结果:要么被你无情的抛弃,因为它已经没有继续修改的价值了;要么继续苟延残喘,并且把维护它的任务转交给别人。
这就是一个OO设计的命运。