设计模式是什么?

设计模式是软件设计中常见问题的典型解决方案。 它们就像能根据需求进行调整的预制蓝图, 可用于解决代码中反复出现的设计问题。

设计模式与方法或库的使用方式不同, 你很难直接在自己的程序中套用某个设计模式。 模式并不是一段特定的代码, 而是解决特定问题的一般性概念。 你可以根据模式来实现符合自己程序实际所需的解决方案。

人们常常会混淆模式和算法, 因为两者在概念上都是已知特定问题的典型解决方案。 但算法总是明确定义达成特定目标所需的一系列步骤, 而模式则是对解决方案的更高层次描述。 同一模式在两个不同程序中的实现代码可能会不一样。

算法更像是菜谱: 提供达成目标的明确步骤。 而模式更像是蓝图: 你可以看到最终的结果和模式的功能, 但需要自己确定实现步骤。

模式包含哪些内容?

大部分模式都有正规的描述方式, 以便在不同情况下使用。 模式的描述通常会包括以下部分:

  1. 意图部分简单描述问题和解决方案。
  2. 动机部分将进一步解释问题并说明模式会如何提供解决方案。
  3. 结构部分展示模式的每个部分和它们之间的关系。
  4. 在不同语言中的实现提供流行编程语言的代码, 让读者更好地理解模式背后的思想。

部分模式介绍中还列出其他的一些实用细节, 例如模式的适用性、 实现步骤以及与其他模式的关系。

设计模式分类

不同设计模式的复杂程度、 细节层次以及在整个系统中的应用范围等方面各不相同。 我喜欢将其类比于道路的建造: 如果你希望让十字路口更加安全, 那么可以安装一些交通信号灯, 或者修建包含行人地下通道在内的多层互通式立交桥。

最基础的、 底层的模式通常被称为惯用技巧。 这类模式一般只能在一种编程语言中使用。

最通用的、 高层的模式是构架模式。 开发者可以在任何编程语言中使用这类模式。 与其他模式不同, 它们可用于整个应用程序的架构设计。

此外, 所有模式可以根据其意图或目的来分类。 本书覆盖了三种主要的模式类别:

创建型模式提供创建对象的机制, 增加已有代码的灵活性和可复用性。

结构型模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。

行为模式负责对象间的高效沟通和职责委派。

看图记设计模式【一】,设计模式是什么?设计模式的组成。相关推荐

  1. [Head First设计模式]山西面馆中的设计模式——装饰者模式

    原文:[Head First设计模式]山西面馆中的设计模式--装饰者模式 引言 在山西面馆吃鸡蛋面的时候突然想起装饰者这个模式,觉得面馆这个场景跟书中的星巴兹咖啡的场景很像,边吃边思考装饰者模式.这里 ...

  2. java 设计模式_快速上手Java设计模式之简介

    阅读本文约需要5分钟 大家好,我是你们的导师,经常看我朋友圈的同学应该知道,我每天会在微信上给大家免费提供以下服务! 1.长期为你提供最优质的学习资源! 2.给你解决技术问题! 3.每天在朋友圈里分享 ...

  3. 『设计模式』HR:不会设计模式,你好意思来面试?(面试必备设计模式)

    23种设计模式+额外常用设计模式汇总 (持续更新) 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用.设计模式是软件开发人员在软件开发过程中面临的一 ...

  4. java策略设计模式_Java中的策略设计模式

    java策略设计模式 策略设计模式是一种行为模式,其中我们有多种算法/策略来完成一项任务,所使用的算法/策略留给客户选择. 各种算法选项封装在单独的类中. 在本教程中,我们将学习在Java中实现策略设 ...

  5. 【从入门到放弃】23种设计模式(1):设计模式综述

    一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式(Factory Method).抽象工厂模式(Abstract Factory).单例模式(Singleton).建 ...

  6. 多个if用什么设计模式_抽丝剥茧——单例设计模式

    单例设计模式 兄弟们好,今天是最后一个设计模式了,也是我们最熟悉的单例设计模式,可以说这个设计模式是我们最先接触到的设计模式了.想当年学习JavaSE的时候,老师聊到一个「饿汉式和懒汉式」,我还纠结了 ...

  7. 子慕谈设计模式系列(二)——设计模式六大原则

    六大原则 单一职责原则 里氏替换原则 依赖倒置原则 接口隔离原则 迪米特法则 开闭原则 前言 设计模式不容易用文字描述清楚,而过多的代码,看起来也让人摸不到头脑,加上词语或者文字描述的抽象感,很容易让 ...

  8. JavaScript设计模式第一弹-创建型设计模式

    前言 接下来将会为大家介绍设计模式中的创建型设计模式,在此之前需要掌握一定的JavaScript对象继承基础. 简单工厂模式 先说说 什么是简单工厂模式:又叫静态工厂方法,由一个工厂对象决定创建某一种 ...

  9. JAVA设计模式总结之23种设计模式(重点!!!)

    JAVA设计模式总结之23种设计模式: 一.什么是设计模式 设计模式遵循的原则有6个: 二.设计模式的三个分类 三.各分类中模式的关键点 四.概说23种设计模式 1.单例模式(Singleton) 2 ...

  10. 设计模式概述以及 23种设计模式的介绍

    文章目录 设计模式概述(Design pattern): 设计模式3大类 设计模式的七大原则 设计模式概述(Design pattern): 设计模式:代表了最佳的实践,通常被有经验的面向对象的软件开 ...

最新文章

  1. Andorid之Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)的用法总结
  2. png免扣半透素材,让你轻松设计出漂亮的海报!
  3. 看朋友日志发现的一个ios下block相关的内存管理问题,非常奇怪,请大家帮忙一起来回答!...
  4. 机器学习sklearn----支持向量机SVC模型评估指标
  5. 一帮一 分数 15作者 陈越单位 浙江大学
  6. linux 保存bmp 图片
  7. 如何用最简单的方法创建一个超好用的微信公众号页面模板?
  8. Spring 事务源码(6)—createTransactionIfNecessary处理事务属性并尝试创建事务【两万字】
  9. 订单系统设计 —— 订单管理
  10. IDEA Maven遇到的问题 wating for maven import completionomitted for duplicate jar
  11. 中文编程,最精致的python访客登记系统实例项目,微信机器人不再只当人工智障---08
  12. 520 | 用一幅爱的地图表白他/她
  13. Neo4j安装及简单使用
  14. Micro:bit - 功能引脚介绍
  15. Ubuntu青龙面板安装
  16. 【SQL】神奇的DUAL表
  17. JNI入门学程之HelloWorld篇
  18. php输出扶墙而立的三角形,第10章 天天扶墙而立
  19. iframe 边框去除,使用大全
  20. c语言编写u盘杀毒软件,[原创]C语言SDK U盘小偷

热门文章

  1. NVIDA驱动安装-Ubuntu22.04
  2. 图片模糊到清晰的展示方式
  3. 吃东西前最好先念3遍解毒神咒
  4. 抖音账号矩阵系统源码搭建开发部署分析
  5. 【中级软考—软件设计师】1计算机组成与体系结构1.2校验码【***】:1.2.3海明校验码总结梳理
  6. python12306买票_使用 py12306 购票
  7. c++ xlsx、xls另存PDF
  8. LeetCode(2)Add Two Numbers
  9. 7. DS1302时钟
  10. java 23_《分布式JAVA应用 基础与实践》 第三章 3.2 JVM内存管理(三)