`
lovnet
  • 浏览: 6881377 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

设计模式

 
阅读更多

设计模式

什么是设计模式?

开始学习设计模式已经一周多了,到现在才想起来似乎忘了些东西.到底什么设计模式,设计模式是来干嘛的呢?

专业说法是设计模式(Designpattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。通俗的说模式就是解决某一类问题的方法。把解决某类问题的方法总结归纳到理论高度,那就是模式。设计模式就是软件设计过程种遇到某种特定的情况使用的特定的解决方法.经过无数前辈的努力将这些特定情况下使用的特定的解决方法总结归纳起来便有了设计模式.

为什么我们要使用设计模式?

其实往往事实是这些特定的情况都能以一种非设计模式的普通的解决方法来解决,但是为什么我们还要学习和使用设计模式呢?

众所周知构建一个优秀的系统最困难之处不在于编码,而是在早期做出的设计上的决定。设计是软件开发生命周期中的关键阶段,好的设计能产生好的产品,而不当的设计则会影响最终产品的质量。设计模式是拥有多年开发设计经验的人给我们的经验传承,它是作为专家的建议而引入的。如果我们没有足够的经验,我们很难做出好的设计,富有经验的开发者和设计者以设计模式的形式将他们的经验传授给我们,拥有了这些经验之后,我们也能做出好的设计来了。所以如果想在这条路上走的更好,行的更远,设计模式是必不可少的.

那么都有哪些设计模式呢?

如图常用的GOF设计模式一共是三类,总共23个设计模式

根据目的准则分类:

1.创建型:creational 与对象的创建有关。

2.结构型:Structural 处理类或对象之间的组合。

3.行为型:behavioral 描述类或对象如何交互及如何分配职责。

什么情况下使用设计模式呢?

当你的项目发现有如下问题之一时,就需要考虑重构代码,可能会有某种模式适合。

(1)代码无法进行单元测试时;

(2)需求的变动总是导致代码的变动;

(3)由重复代码存在;

(4)继承层次过多;

(5)隐藏的依赖过多;

设计模式不是万能的

设计模式有很多的优点,但是设计模式不是万能的,同样也有很多的缺点.

首先模式的使用是有前提和代价的,模式是在某种前提下,综合各方面的因素考虑得出的结果。即在使用模式时总要付出一定的代价的,当然这种代价是可以接受的。。模式实际上是某种语境下的解决方案。在实际的项目中,是否采用模式取决于项目是否符合模式的语境,并且是否可以接受使用模式多带来的代价。很多情况下,模式的选择不是必然的。有时可以不采用模式也可以很好地解决问题:有时可以采用一种模式代替另一种模式,或者说在特定的语境下模式的使用不是唯一的。

其次很多情况下会降低开发速度,即使是使用正确的设计模式。这是因为设计模式可能会引入更多的对象和更复杂的对象装配关系,从而使得程序有更多的动态,从局部看来变得结构复杂,难以理解并且测试困难。 然而,如果从整个项目和生命周期来看,合理地使用设计模式可以使程序结构更为健壮,更具有可维护性。

最后我们用设计模式是为了设计,而不是为了使用设计模式而研究设计模式.设计模式不应该太强势的使用,往往很多情况下不使用设计模式是因为不需要,问题还没有复杂到非要用设计模式的地步

分享到:
评论

相关推荐

    人人都懂设计模式 人人都懂设计模式

    人人都懂设计模式 设计模式是软件开发中的一种解决方案,它提供了一种通用的设计思想和方法论,可以帮助开发者更好地设计和实现软件系统。设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。 在本书中...

    二十三种设计模式【PDF版】

    主要是介绍各种格式流行的软件设计模式,对于程序员的进一步提升起推进作用,有时间可以随便翻翻~~ 23种设计模式汇集 如果你还不了解设计模式是什么的话? 那就先看设计模式引言 ! 学习 GoF 设计模式的重要性 ...

    23种设计模式详解PDF

    设计模式 的分类 总体来说设计模式分为三大类: 创建型模式(5): 工厂方法模式 、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(7): 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、...

    GOF设计模式中英文+设计模式精解中英文

    GOF(Gang of Four)设计模式,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位专家在他们的著作《设计模式:可复用面向对象软件的基础》中提出,被誉为设计模式的经典之作。本资源包含了GOF设计...

    Head First 设计模式 +Java设计模式(第2版)

    《Head First 设计模式》与《Java设计模式(第2版)》是两本非常重要的IT书籍,专注于软件开发中的设计模式。设计模式是解决软件设计中常见问题的经验总结,它们提供了一种标准的方法来处理特定场景下的问题,使得代码...

    设计模式解析.pdf

    ### 设计模式解析:深入理解软件设计的核心原则与实践 #### 标题解析:设计模式解析 设计模式是软件工程领域的重要概念,旨在提供解决常见软件设计问题的模板或指导原则。《设计模式解析》这一标题暗示了书籍将...

    C#设计模式.PDF

    根据提供的文档概览,我们可以对每个章节所涉及的设计模式进行详细的阐述和解释。下面将针对文档中提及的设计模式逐一展开,以便更好地理解这些模式的概念、结构、应用场景以及优缺点。 ### 1. 面向对象程序设计...

    设计模式(包含5个设计模式)含源代码报告.rar

    这个压缩包文件"设计模式(包含5个设计模式)含源代码报告.rar"显然是一份宝贵的资源,它涵盖了五个核心的设计模式,并附带了详细的类图、源代码以及文档报告,这对于学习和理解设计模式至关重要。 首先,我们要探讨...

    设计模式之蝉

    在计算机科学领域,设计模式是软件工程中用于解决特定问题的一般性方案,它们是经过实践检验的最佳实践。这些模式被广泛应用于面向对象软件设计中,能够提高代码的可重用性、灵活性和可维护性。设计模式通常被划分为...

    python设计模式第2版.pdf

    设计模式是构建大型软件系统zui强大的方法之一,优化软件架构和设计已经逐渐成为软件开发和维护过程中的一个重要课题。 Python设计模式(第2版)通过11章内容,全面揭示有关设计模式的内容,并结合Python语言进行示例...

    软件设计模式(java版)习题答案.pdf

    软件设计模式(Java版)习题答案 本资源为软件设计模式(Java版)习题答案,由程细柱编著,人民邮电出版社出版。该资源涵盖了软件设计模式的基础知识,包括软件设计模式的概述、UML中的类图、面向对象的设计原则、...

    C_设计模式(23种设计模式)

    C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计模式(23种设计模式)C_设计...

    Head First设计模式.pdf

    全书用两章篇幅对设计模式和GRASP作了基本介绍,3种设计模式的讲解:对于每一种模式,先给出定义,接着通过类比方式用一个现实世界中的例子说明模式的应用,然后分别以C#和Java代码例述模式的架构实现。最后一章给出...

    MongoDB应用设计模式

    资源名称:MongoDB应用设计模式内容简介:无论是在构建社交媒体网站,还是在开发一个仅在内部使用的企业应用程序,《MongoDB应用设计模式》展示了MongoDB需要解决的商业问题之间的连接。你将学到如何把MongoDB设计...

    设计模式那点事

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决问题的可重用解决方案。《设计模式那点事》这本书的PPT为我们提供了一种深入理解和学习设计模式的途径。在这里,我们将深入探讨设计模式的核心概念、...

    设计模式之美——教你写出高质量代码

    设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的经验总结。"设计模式之美——教你写出高质量代码"这个主题旨在帮助开发者更好地理解和应用设计模式,从而提升代码的质量和可维护性。设计模式...

    Java设计模式 设计模式介绍

    章节介绍:1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立性模式介绍 4、单态创立性模式介绍 5、单态创立性模式介绍 6、观察者模式介绍7、责任链模式 8、设计模式之...

    设计模式:可复用面向对象软件的基础--详细书签版

     “[设计模式]在实用环境下特别有用,因为它分类描述了一组设计良好,表达清楚的面向对象软件设计模式。整个设计模式领域还很新,本书的四位作者也许已占据了这个领域造诣最深的专家中的半数,因而他们定义模式的方法...

    软件设计模式期末作业

    在软件开发领域,设计模式是经过时间和实践验证的解决方案模板,用于解决常见问题。本作业以“软件设计模式”为主题,特别关注了装饰模式、工厂模式和适配器模式的运用。这三种模式都是面向对象设计的核心部分,它们...

Global site tag (gtag.js) - Google Analytics