为什么要学习设计模式?

来源:互联网 发布:蓝月传奇龙魂数据 编辑:程序博客网 时间:2024/06/08 09:58

        设计面向对象软件比较困难,而设计可复用的面向对象软件就更加困难。你必须找到相关的对象,以适当的粒度将它们归类,再定义类的接口和继承层次,建立对象之间的基本关系。你的设计应该对手头的问题有针对性,同事对将来的问题和需求也要有足够的通用性。你也希望避免重复设计或极可能少做重复设计。有经验的面向对象设计者会告诉你,要一下子就得到复用性和灵活性好的设计,即使不是不可能的至少也是非常困难的。一个设计在最终完成之前常要被复用好几次,而且每一次都有所修改。

        有经验的面向对象设计者的确能做出良好的设计,而新手则面对众多选择无从下手,总是求助于以前使用过的非面向对象技术。新手需要花费较长时间领会良好的面向对象设计是怎么回事儿。有经验的设计者显然知道一些新手所不知道的东西,这又是什么呢?

        内行的设计者知道:不是解决任何问题都要从头做起。他们更愿意复用以前使用过的解决方案。当找到一个好的解决方案,他们会一遍又一遍地使用。这些经验是他们成为内行的部分原因。因此,你会在许多面向对象系统中看到类和相互通信的对象的重复模式。这些模式解决特定的设计问题,使面向对象设计更灵活、优雅,最终复用性更好。他们帮助设计者将心的设计建立在以往工作的基础上,复用以往成功的设计方案。一个熟悉这些模式的设计者不需要再去发现它们,而能够立即将它们应用于设计问题中。

        以下类比可以帮助说明这一点。小说家和剧本作家很少从头开始设计剧情。他们总是沿袭一些业已存在的模式,想“悲剧性英雄”模式(《麦克白》、《哈姆雷特》等)或“浪漫小说”模式(存在着无数浪漫小说)。同样地,面向对象设计员也沿袭一些模式,想“用对象表示状态”和“修饰对象以便于你能容易地添加/删除属性”等。一旦懂得了模式,许多涉及决策自然而然就产生了。

        我们都知道设计经验额重要价值。你曾经多少次有过这种感觉----你已经解决了一个问题但就是不能确切知道是在什么地方或怎么解决的?如果您能记起以前问题的细节和怎么解决它的,你就可以复用以前的经验而不需要重新发现它。然而,我们并没有很好地记录下可供他人使用的软件设计经验。

       《设计模式》、《设计模式之禅》或《研磨设计模式》 这些书的目的就是将面向对象软件的设计经验作为设计模式记录下来。每一个设计模式系统的命名、解释和评价了面向对象系统中一个重要的和重复出现的设计。我们的目标是将设计经验以人们能够有效利用的形式记录下来。鉴于此目的,我们编写了一些最重要的设计模式,并以编目分类的形式将它们展现出来。

        设计模式使人们可以更加简单方便地复用成功的设计和体系结构。将已证实的技术表述称设计模式也会使新系统开发者更容易理解其设计思路。设计模式帮助你作出有利于系统复用的选择,避免设计损害了系统复用性。通过提供一个显式类和对象作用关系以及它们之间潜在联系的说明规范,设计模式甚至能够提高已有系统的文档管理和系统维护的有效性。简而言之,设计模式可以帮助设计者更快更好地完成系统设计。

原创粉丝点击