• 设计模式-概述


    1.模式从何而来

      ♦模式起源于建筑领域

      ♦模式之父—Christopher Alexander(克里斯托弗·亚历山大)

    ♦模式定义:模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。【A pattern is a successful or efficient solution to a recurring  problem within a context.

    2.软件模式的诞生

    1991-1992年以“四人组(Gang of Four,简称GoF,分别是Erich Gamma, Richard Helm, Ralph JohnsonJohn Vlissides)”自称的四位著名软件工程学者将模式的思想引入软件工程方法学。

    1994年GoF归纳发表了23种在软件开发中使用频率较高的设计模式,旨在用模式来统一沟通面向对象方法在分析、设计和实现间的鸿沟。

    ♦软件模式包括设计模式架构模式分析模式过程模式。(实际上,在软件开发生命周期的每一个阶段都存在着一些被认同的模式。)

    软件模式的基础结构

      1. 问题描述:待解决的问题是什么
      2. 前提条件:在何种环境或约束条件下使用
      3. 解法:如何解决
      4. 效果:有哪些优缺点

     ♦设计模式

      • 在软件模式中,设计模式是研究最为深入的分支。
      • 设计模式用于在特定的条件下为一些重复出现的软件设计问题提供合理的、有效的解决方案。
      • 1995年,GoF出版包含23种设计模式的《设计模式:可复用面向对象软件的基础》(《Design Patterns: Elements of Reusable Object-Oriented Software》)。标志着设计模式正式成为面向对象软件工程的一个重要研究分支。

     3.设计模式是什么

    设计模式定义:设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。

    ♦设计模式一般包含模式名称问题目的解决方案效果等组成要素,其中关键要素是模式名称问题解决方案效果

      • 模式名称:通过一两个词来描述模式的问题、解决方案和效果。绝大多数模式都是根据其功能或模式结构来命名。
      • 问题:描述了应该在何时使用模式,它包含了设计中存在的问题以及问题存在的原因。
      • 解决方案:描述了一个设计模式的组成成分,以及这些组成成分之间的相互关系,各自的职责和协作方式,通常通过UML类图和核心代码来进行描述。
      • 效果:描述了模式的优缺点以及在使用模式时应权衡的问题。

    ♦设计模式分类:(两种分类方式经常结合使用,如单例模式是对象创建型模式,模板方法模式是类行为型模式)

      • 根据用途:
        • 创建型模式:主要用于描述如何创建对象。
        • 结构型模式:主要用于描述如何实现类或对象的组合。
        • 行为型模式:主要用于描述类或对象怎样交互以及怎样分配职责。
      • 根据处理关系:
        • 类模式:处理类之间的关系。
        • 对象模式:处理对象之间的关系。
      • 23种设计模式包含5种创建型设计模式、7种结构型设计模式和11种行为型设计模式。(简单工厂模式未包含在23种设计模式之中)

    常用设计模式一览表

     4.设计模式的作用

    ♦设计模式是成功的、能够实现可维护性复用的设计方案,可以避免做重复性的工作,有助于提高开发和设计效率。

    ♦设计模式提供了一套通用的设计词汇和一种通用的形式来方便开发人员之间沟通和交流,使得设计方案更加通俗易懂。(跨语言、跨平台、跨应用、跨国界)

    ♦设计模式有助于提高系统的可重用性、灵活性和可扩展性。

    ♦合理使用设计模式并对设计模式的使用情况进行文档化,将有助于别人更快地理解系统。

    ♦学习设计模式将有助于初学者更加深入地理解面向对象思想。

    模式从不保证任何东西,它不能保证你一定能够做出可复用的软件,提高你的生产率,更不能保证世界和平。模式并不能替代人来完成软件系统的创造,它们只不过会给那些缺乏经验但却具备才能和创造力的人带来希望。

  • 相关阅读:
    JVM 性能调优实战之:使用阿里开源工具 TProfiler 在海量业务代码中精确定位性能代码
    JVM 性能调优实战之:一次系统性能瓶颈的寻找过程
    MongoDB之一介绍(MongoDB与MySQL的区别、BSON与JSON的区别)
    spring之:XmlWebApplicationContext作为Spring Web应用的IoC容器,实例化和加载Bean的过程
    SpringBoot自动化配置之四:SpringBoot 之Starter(自动配置)、Command-line runners
    分析诊断工具之一:MYSQL性能查看(多指标)
    Condition-线程通信更高效的方式
    微服务监控之一:Metrics让微服务运行更透明
    游戏后台服务技术选型
    TCP之四:TCP 滑动窗口协议 详解
  • 原文地址:https://www.cnblogs.com/wangtao1211/p/12430766.html
Copyright © 2020-2023  润新知