设计模式的理解与认识

设计模式的理解与认识,第1张

设计模式的理解与认识,第2张

在软件开发过程中,一个系统成败的关键就是在于其设计,如果系统设计的很好,那么在后续开发中就能少走弯路,并且在后续的系统维护中,能够简单、轻松,但如果系统设计中就出现了问题,那么这个系统的开发必然是痛苦的,编程人员的不停抱怨,维护人员的痛苦挣扎,最终导致系统的报废,没有人愿意再去关注它。

因此,人们非常希望能够在新的软件开发过程中使用那些在软件系统设计、开发过程中长期积累的很多好的、有价值的经验,来提高新系统的开发效率,保证新系统能够稳定、安全、易于维护。

所以,如何将这些有价值的经验记录下来,能够很好的交流、传递就显得非常重要。对这些直接的、原始的经验,采用面向对象的方法进行抽象,提炼出很多的模式,这些模式很清晰的说明了它们所表达的关联、问题和解决方式之间的关系。而这些在软件设计上积累、抽象出来的模式,我们称之为设计模式。

设计模式的概念

简单地说,模式是一个出现在世界上的实物,同时也是一条规则,告诉你应该如何创建一个实物、应该在何时创建。它既是过程,也是实物;既是对当前实物的描述,也是对创建实物的过程的描述。我们需要这样一种语言:它让我们高效地交流、讨论那些常见的、重复出现的设计概念,并在这些概念上建立起我们的系统。不要仅仅把模式当作解决方案,而要把它们当作设计的词汇,这些词汇可以根据一定的规则组合起来形成句子(也就是系统设计)。

C. Alexander描述:“每个模式是一个有三个部分的规则,它表达一定的关联、一个问题和一个解决方式之间的关系。”

设计模式可以使人们更加方便的复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统的开发者更加容易理解其设计思路。设计模式帮助你做出有利于系统间潜在联系的说明规范,设计模式甚至能够提高已有系统的文档管理和系统维护的有效性。简而言之,设计模式可以帮助设计者更快更好的完成系统设计。

设计模式的分类

在《设计模式》书中共给出了二十三个模式。这二十三又根据其表现不同可分成了几类。各个模式是在不同场景下,不同问题的解决方案。

创建型模式

创建型模式抽象了实例化过程。它们帮助一个系统独立于如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委托给另一个对象。

随着系统演化得越来越依赖于对象复合而不是类继承,创建型模式变得更为重要。当这种情况发生时,重心从对一组固定行为得硬编码转移为定义一个较小的基本行为集,这些行为可以被组合成任意数目的更为复杂的行为。这样创建有特定行为的对象要求的不仅仅是实例化一个类。

创建型模式中有两个不断出现的主旋律。第一,它们都将关于该系统使用哪些具体的类的信息封装起来。第二,它们隐藏了这些类的实例是如何被创建和放在一起的。整个系统关于这些对象所知道的是由抽象类所定义的接口。因此,创建型模式在什么被创建,谁创建它,它是怎样被创建的,以及何时创建这些方面给予你很大的灵活性。它们允许你使用结构和功能差别很大的“产品”对象配置一个系统。配置可以是静态的(即在编译时指定),也可以是动态的(在运行时)。

结构型模式

结构型模式涉及到如何组合类和对象以获得更大的结构。结构型模式采用继承机制来组合接口或实现。一个简单的例子是采用多重继承方法将两个以上的类组合成一个类,结果这个类包含了所有父类的性质。这一模式尤其有助于多个独立开发的类库协同工作。

结构型对象模式不是对接口和实现进行组合,而是描述了如何对一些对象进行组合,从而实现新功能的一些方法。因为可以在运行时刻改变对象组合关系,所以对象组合方式具有更大的灵活性,而这种机制用静态类组合是不可能实现的。


行为模式

行为模式涉及到算法和对象间职责的分配。行为模式不仅描述对象或类的模式,还描述它们之间的通信模式。这些模式刻画了在运行时难以跟踪的复杂的控制流。它们将你的注意力从控制流转移到对象间的联系方式上来。

行为类模式使用继承机制在类间分派行为。本章包括两个这样的模式。

行为对象模式使用对象复合而不是继承。一些行为对象模式描述了一组对等的对象怎样相互协作以完成其中任一个对象都无法单独完成的任务。这里一个重要的问题是对等的对象如何了解对方。对等对象可以保持显式的对对方的引用,但那会增加它们的耦合度。在极端的情况下,每一个对象都要了解所有其他的对象。

从设计模式中得到的收获
设计模式是系统地命名、解释和评价了面向对象系统中一个重要的和重复出现的设计,其目标是将设计经验以人们能够有效利用的形式记录下来。设计模式使人们可以更加简单方便地复用成功地设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。设计模式帮助你做出有利于系统复用的选择,避免设计损害了系统复用性。通过提供一个显示类和对象作用关系以及它们之间潜在联系的说明规范,设计模式甚至能够提高已有系统的文档管理和系统维护的有效性。简而言之,设计模式可以帮助设计者更快更好地完成系统设计。

模式的绝大多数好处都来自于原封不动的使用,也就是说,没有任何形式的外部支持,这带来了四大好处:

1. 它们记录了专家的经验,并且让非专家也能理解。

2. 它们的名称构成了一份词汇表,帮助开发者更好的交流。

3. 它们帮助人们更快的理解一个系统,只要这个系统是用模式的方式描述的。

4. 它们使系统的重组变得更容易,不管原来的系统是否以模式的方式设计的。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 设计模式的理解与认识

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情