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