所谓模式,就是至解决某一类相似问题的方法论。某个模式描述了一个在日常生活中不断出现的问题,然后描述该问题的解决方案的核心。人们可以使用已有的解决方案来解决新出现的问题。模式可应用在不同的领域当中,在软件系统的设计领域中,也出现了许多设计模式。

每种设计模式都包含4个要素。

  • 模式名称相当于模式的助记符。
  • 问题描述了模式的使用场景,即模式可以解决的某种设计问题。
  • 解决方案描述了针对特定的设计问题可采用怎样的设计方法,包括设计的组成成分,各成分的职责和协作方式,以及各成分之间的相互关系。
  • 效果描述了特定模式的应用对系统灵活性,扩展性和可移植性等各种特性的影响,它对评价设计选择和模式的理解非常有益。

目前比较常用的是由Erich Gamma, Richard Helm, Ralph Johnson 和 John Vlissides所提出的23种设计模式,他们分为3种类型,即创建型模式,结构型模式和行为型模式。

  • 创建型模式通过创建对象而不直接实例化对象的过程,使得程序在判定给定的情况下更加灵活的创建对象。很多时候,创建对象的本意随程序需求的不同而不同,如果将创建过程抽象程一个专门的
    “ 创造器 ” 类,那么程序的灵活性和通用性将有很大的提高。

例: 工厂模式


效果:使用工厂方法在累的内部创建对象通常比直接创建对象更加灵活。而且,可以将对象的创建工作延迟到子类中,这对于客户不清楚对象的类型的情况非常有益。

  • 结构型模式提供了不同类或对象之间各异的静态结构,它描述了如何组合类或对象以获得更大的结构,如复杂的用户界面或报表数据。

例: 桥接模式


效果:桥接模式最大的优点在于抽象和实现可以独立变化。如果软件系统需要在构件的抽象角色和实现角色之间增加更多灵活性,那么可以使用该模式

  • 行为型模式定义了系统类对象间的通信,以及复杂程序中的流程控制。

例: 策略模式

效果: 策略模式降低了代码的耦合度,当系统的业务策略改变时,仅需要少量的修改即可。

其他模式

什么是设计模式 ?与其中几项设计模式相关推荐

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

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

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

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

  3. [Head First设计模式]山西面馆中的设计模式——观察者模式

    原文:[Head First设计模式]山西面馆中的设计模式--观察者模式 系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 引言 不知不自觉又将设计模式融入生活了,吃个饭也 ...

  4. Java设计模式(十四):MVC设计模式

    1. 应用场景 MVC设计模式广泛应用于桌面应用程序开发和网页页面开发这些与用户交互的应用场景中. 2.概念 众所周知MVC不是设计模式,是一个比设计模式更大一点的模式,称作设计模式不合理,应该说MV ...

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

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

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

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

  7. 设计模式 原型模式_原型设计模式:创建另一个小车

    设计模式 原型模式 创建对象确实是一个耗时的过程,也是一件昂贵的事情. 因此,我们现在正冒险节省时间和金钱. 我们该怎么做? 克隆奇迹多莉 有人记得多莉吗? 是的,是绵羊,是第一个被克隆的哺乳动物. ...

  8. java 生成器 设计模式_Java中的生成器设计模式

    java 生成器 设计模式 Java 中的 Builder设计模式是一种创建模式,即用于创建对象,类似于 工厂方法设计模式 ,这也是创建设计模式. 在学习任何设计模式之前,我建议先找出特定设计模式要解 ...

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

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

  10. 设计模式杂谈(一)——设计模式概述

    文章目录 1 设计模式概述 1.1 软件设计模式的产生背景 1.2 软件设计模式的概念 1.3 设计模式的必要性 1.4 设计模式分类 1 设计模式概述 1.1 软件设计模式的产生背景 设计模式最初并 ...

最新文章

  1. Bzoj1185最小矩阵覆盖[旋转卡壳+凸包+处理[-0]情况]
  2. 源码阅读:AFNetworking(八)——AFAutoPurgingImageCache
  3. 福大软工1816 · 第七次作业 - 需求分析报告之拖鞋旅游队
  4. Date、DateFormat、Calendar日期类
  5. matplotlib 显示批量图片_chapter4-1 简单数据可视化包Matplotlib整理1
  6. python的子子孙孙(变种编程语言)
  7. Struts2和Struts1的不同
  8. 软件与软件工程的概念
  9. Lock应用之 读写锁
  10. MySQL优化(三):优化数据库对象
  11. Head First Design Pattern 读书笔记(4) 工厂模式
  12. 301 302区别_302状态码代表什么,302状态码解决方法
  13. java后台处理跨域问题_用cros解决前后端分离的跨域问题
  14. 大数据shipin教程_大数据自学全套视频教程下载
  15. 计算机及软件工程专业职称,有关软件工程师职称
  16. 小镇青年的神话背后,是你想不到的辛酸小镇青年
  17. VR中的9轴传感器(重力加速度/陀螺仪/磁力计).md
  18. 8脚51单片机DIY时间显示+闹钟技术分享(一)
  19. Content Size Fitter组件的使用
  20. 在线机器学习算法及其伪代码

热门文章

  1. X86 Linux 汇编 GDB 调试
  2. java bpm 开源_几种Java开源工作流引擎的简单比较
  3. [转载]Java完美经典读书笔记
  4. 2021华为杯数学建模“空气质量预报二次建模” 思路
  5. mkv视频格式转换mp4格式?
  6. nodejs按固定大小读取文件
  7. 攻略来了!2019世界虚拟现实产业大会AR/MR参展指南
  8. centos7的内核升级
  9. matlab audiowrite
  10. focusky怎么制作html5,Focusky怎么制作3D幻灯片? 效果完爆PPT