加入收藏 | 设为首页 | 会员中心 | 我要投稿 武汉站长网 (https://www.027zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 应用 > 正文

浅谈设计模式的应用

发布时间:2023-01-10 10:02:35 所属栏目:应用 来源:未知
导读: 【摘要】设计模式最初产生于建筑行业。在80年代后期,随着面向对象思想的出现和普及,设计模式开始进入计算机系统领域。本文简单讨论了什么是设计模式,设计模式的两种分类方式以及如何在实

【摘要】设计模式最初产生于建筑行业。在80年代后期,随着面向对象思想的出现和普及,设计模式开始进入计算机系统领域。本文简单讨论了什么是设计模式,设计模式的两种分类方式以及如何在实际工作中运用设计模式等三方面的问题。

【关键词】设计模式;应用;面向对象;重用

很多程序员都是在工作中积累了一定经验后,才开始接触设计模式的,但是大部分人在刚开始接触时对设计模式的理解就是不懂为什么要把很简单的东西复杂化。其实所谓“复杂”恰恰就是设计模式的精髓所在。我们的“简单”其实只是一把钥匙开一把锁的模式,仅仅着眼于解决现在的问题;而设计模式的“复杂”就在于构造一个“万能钥匙”,即提出一种所有锁的开锁方案。

一、什么是设计模式

软件设计模式提供了一种共享经验的方式,人们都可以因此而获利,同时避免大量的重复工作。设计模式一般需要从问题最细微的细节逐步抽象出来设计应用,从而可以获得最大的普适性。Gang Of Four合著的《设计模式》一书,使设计模式得到了高度的重视。

设计模式比代码高一个层次。通过引入设计模式,我们的代码能具有较高的稳定性或者复用性。有经验的软件设计人员通常知道如何利用面向对象语言编写出高效率的代码。

如果我们也期望成为一名出色的软件设计人员,那么我们就必须学习并使用设计模式。

二、设计模式的分类

《设计模式》中一共提到了23种基本设计模式,而这些设计模式又可以分为创建型、行为型和结构型三大类。

1.创建型

创建型模式主要用于对象的创建,但它隐藏了对象创建的细节,使对象的创建不再依赖于具体的对象类型。创建型设计模式可以使得客户代码无须调用类的构造器方法,就可以创建一个新的对象。

创建型模式一般包括:原型模式、单体模式、工厂模式、抽象工厂模式、生成器模式和备忘录模式。

2.行为型

行为模式涉及到算法和对象间职责的分配。它不仅描述对象和类的模式,还描述它们之间的联系。这使我们仅需关注对象之间的联系,而不再需要像传统的实现方式那样去操作各种复杂的控制流。

行为型设计模式又可以细分为责任型模式和操作型模式两类:

设计应用_网站规划与网页设计应用教程_设计应用

1)责任型模式

封装是面向对象的软件开发的一个主要特点,它将责任分配给各个对象,这是面向对象的程序设计的规范,但某些时候,我们需要将责任集中到某个中间对象或特殊对象,由它集中处理,这就是责任模式。

责任模式一般包括:观察者模式、中介模式、代理模式、责任链模式、迭代器模式和享元模式。

2)操作型模式

如果我们需要使用多个方法来完成一个设计,而这些方法具有相同的方法签名,那么我们需要使用操作型模式。

操作型模式一般包括:模板方法模式、状态模式、策略模式、命令模式、访问者模式和解释器模式。

3.结构型

结构型模式充分的利用了接口的概念,这里的接口,是指抽象,通过这种抽象机制来组合类,从而实现所需的功能。

结构型模式包括了适配器模式、外观模式、组合模式、桥接模式和装饰器模式。

我们还可以根据可见性和依赖程度将设计模式分为broad exposure和isolated use两类。

Broad exposure设计模式可以简单的理解为开放型模式,由于过度的开放,会导致客户代码与其产生依赖。因此,使用这种设计模式的决定不能轻易取消,否则将会产生十分巨大的开销。

相对于broad exposure模式,Isolated use则将细节隐藏起来,对客户代码基本透明,避免了依赖性而导致的外部耦合,从而使得程序更加稳定。

三、设计模式在实际中的应用

设计模式的理解和使用并非朝夕之功,一般会经历三个阶段:

设计应用_网站规划与网页设计应用教程_设计应用

第一个阶段,为了模式而模式。在这个阶段里程序设计人员刚刚开始接触设计模式,并努力在自己的代码中有意的加入设计模式,但是由于对设计模式的理解不足和经验的欠缺,往往不能很好的达到预期的目的,需要通过大量的失败和不断的尝试积累经验;

第二个阶段,我们可以称之为非最优化模式。在这个阶段里,程序设计人员对模式已经有了一定的理解,而且可以自如的在程序设计中应用一些设计模式理念,但是仍有考虑不周之处,可以看作是上一阶段的进阶阶段;

第三个阶段,无模式阶段。即在程序设计过程中并没有可以追求所谓的模式,而是自然而然将设计模式的理念融入到其设计当中,该阶段可谓是设计模式的最高境界。

但目前大多数程序设计人员尚处于第二阶段甚至第一阶段当中,如何把设计模式的采用和日益临近的工期、紧缩的预算及资源相结合,是我们面临的主要问题。以下提供三个建议:

1.良好的沟通和培训

在程序开发过程中,必须保持良好的沟通机制,而且应当是跨团队,甚至是跨项目的,从而预防相对独立或者唯一的实现方式。

另外通过强化培训,加强对设计模式的理解并提高应用水平。在学习设计模式的同时也必须紧记各种反模式,以避免重蹈覆辙。

2.设计模式的评审

设计模式并非万试万灵的,当我们选择了不当的模式的时候,它可能给我们的项目带来打击。因此在使用设计模式之前,我们需要进行评审。正式的评审一般适用于大规模的框架性的设计模式,而对于代码开发过程中使用到的设计模式,建议通过代码的走查或者代码审计等方式完成评审。

3.实现重用和程序的稳定

设计模式引入的主要目的是实现重用,重用的实现可以缩短开发和维护时间,降低其成本。broad exposure设计模式就很好实现了这一点。但由于其依赖性的存在,可能会产生因为其自身变更而产生的连锁反应;

isolated use设计模式无疑很好的解决了这个问题。它将程序的功能限制在某一特定的范围内,这一范围内的修改不会引起其客户代码的连锁反应,从而实现程序结构上的稳定。但是如果他们是根据具体情况定制的,他们就非常难以重用。

参考文献

[1]Steven John Metsker.设计模式Java手册[M].龚波等译.机械工业出版社.2006.

[2]王权.盾构施工监测系统设计与实现.[M]大连理工大学博硕论文.2009.

(编辑:武汉站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章