设计模式—23种设计模式详解

23 篇文章 1 订阅
订阅专栏

目录

一、设计模式概述

二、设计模式的分类(总共有 25 种设计模式)

 1、创建型模式(5种)

2、结构型模式(8种)

3、行为型模式(12种)

三、设计模式的优点和缺点

1、设计模式的优点:

2、设计模式的缺点:


一、设计模式概述

        设计模式是在软件开发过程中常见的解决问题的方法和思想的总结和抽象。它们是经过实践验证的,并且在特定情况下被广泛接受和应用。

        有很多经典的设计模式书籍,如

(1)《设计模式:可复用面向对象软件的基础》(Design Patterns: Elements of Reusable Object-Oriented Software)

        四位作者合称 GOF(四人帮,全拼 Gang of Four)。他们所提出的设计模式主要是基于以下的面向对象设计原则。

  • 对接口编程而不是对实现编程。
  • 优先使用对象组合而不是继承。

(2)《大话设计模式》( 程杰)

二、设计模式的分类(总共有 25 种设计模式)

 1、创建型模式(5种)

        这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。

(1)工厂模式(Factory Pattern):通过工厂类创建对象,而不是直接实例化对象。

(2)抽象工厂模式(Abstract Factory Pattern):提供一个接口来创建一系列相关或相互依赖的对象。

(3)单例模式(Singleton Pattern):确保一个类只有一个实例,并提供全局访问点。

(4)建造者模式(Builder Pattern):将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。

(5)原型模式(Prototype Pattern):通过复制现有对象来创建新对象,而不是使用new操作符。

2、结构型模式(8种)

        这些模式关注对象之间的组合和关系,旨在解决如何构建灵活且可复用的类和对象结构

(1)适配器模式(Adapter Pattern):将一个类的接口转换成客户端所期望的另一个接口。

(2)桥接模式(Bridge Pattern):将抽象部分与实现部分分离,使它们可以独立变化。

(3)过滤器模式(Filter、Criteria Pattern):这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。

(4)组合模式(Composite Pattern):将对象组合成树形结构以表示整体-部分的层次结构。

(5)装饰器模式(Decorator Pattern):动态地给对象添加额外的职责。

(6)外观模式(Facade Pattern):提供一个简化的接口,隐藏系统的复杂性。

(7)享元模式(Flyweight Pattern):通过共享对象来减少内存使用。

(8)代理模式(Proxy Pattern):为其他对象提供一个代理以控制对这个对象的访问。

3、行为型模式(12种)

        这些模式关注对象之间的通信和交互,旨在解决对象之间的责任分配和算法的封装。

(1)责任链模式(Chain of Responsibility Pattern):将请求的发送者和接收者解耦,使多个对象都有机会处理这个请求。

(2)命令模式(Command Pattern):将请求封装成对象,以便可以用不同的请求对客户端进行参数化。

(3)解释器模式(Interpreter Pattern):给定一个语言,定义它的文法的一种表示,并定义一个解释器,用来解释语言中的句子。

(4)迭代器模式(Iterator Pattern):提供一种顺序访问一个聚合对象中各个元素的方法,而又不暴露该对象的内部表示。

(5)中介者模式(Mediator Pattern):通过一个中介对象来封装一系列对象之间的交互。

(6)备忘录模式(Memento Pattern):在不破坏封装性的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态。

(7)观察者模式(Observer Pattern):定义对象间的一种一对多的依赖关系,使得当一个对象的状态改变时,所有依赖它的对象都会得到通知并自动更新。

(8)状态模式(State Pattern):允许对象在内部状态改变时改变它的行为。

(9)空对象模式(Null Object Pattern):一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。

(10)策略模式(Strategy Pattern):定义一系列算法,将它们封装起来,并使它们可以互相替换。

(11)模板模式(Template Pattern):定义一个算法的骨架,将一些步骤延迟到子类中实现。

(12)访问者模式(Visitor Pattern):将算法与对象结构分离,并在不改变对象结构的前提下定义新的操作。

三、设计模式的优点和缺点

1、设计模式的优点:

(1)提供了一种共享的设计词汇和概念,使开发人员能够更好地沟通和理解彼此的设计意图。

(2)提供了经过验证的解决方案,可以提高软件的可维护性、可复用性和灵活性。

(3)促进了代码的重用,避免了重复的设计和实现。

(4)通过遵循设计模式,可以减少系统中的错误和问题,提高代码质量。

2、设计模式的缺点:

(1)学习和理解成本高:设计模式需要花费一定的时间和精力去学习和理解,特别是对于初学者来说可能会感到困惑和复杂。

(2)过度设计:有时候为了使用设计模式而过度设计,导致代码变得复杂和难以维护。在某些情况下,简单的解决方案可能更加适合。

(3)增加代码复杂性:设计模式需要引入额外的类和接口,增加了代码的复杂性和维护成本。

(4)可能降低性能:某些设计模式在提供灵活性的同时可能会带来额外的开销,导致性能下降。

(5)增加了系统的抽象层级:设计模式引入了一些抽象概念和层级,使得系统更加复杂和难以理解。

(6)不适用于所有场景:设计模式并不是适用于所有场景的,有些场景可能没有明显的问题需要解决,使用设计模式反而会增加不必要的复杂性。

需要注意的是,设计模式并不是万能的解决方案,应该根据具体的需求和情况来选择是否使用设计模式。

.NET23种设计模式【完整】
03-21
.NET23种设计模式【完整】
23种设计模式详解PDF
08-03
设计模式 的分类 总体来说设计模式分为三大类: 创建型模式(5): 工厂方法模式 、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(7): 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、...
设计模式详解(总纲)
v5browser
05-30 214
作者:zuoxiaolong8810(左潇龙),转载请注明出处。 最近一直在学习设计模式相关的知识,还是老规矩,和各位一起学习,一起探讨,本系列所发表所有内容仅代表个人观点。 《简介》 说到设计模式,当初第一次听到时,第一反应就是很深奥,完全理解不了这个概念到底是什么意思,下面我先从网上摘录一份定义。 设计模式(Designpattern)是一套被反复使用、多数人知...
什么是设计模式,要掌握那些知识
weixin_47260194的博客
09-09 1814
设计模式是经验总结出来的、用于解决软件开发中常见问题的最佳实践。它不是代码,而是一种解决问题的模板或思路,可以被应用在不同的场景中。
设计模式概述
06-12 775
设计模式转自:http://www.itisedu.com/phrase/200603061631585.html      设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。      毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码
23种设计模式汇总整理
热门推荐
一个本科小生的奋斗史
04-09 27万+
设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式 结构型模式,共七种:适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。 ...
設計模式之Template
!Java
06-24 1991
Template定義:定義一個操作中演算法的骨架,將一些步驟的執行延遲到其子類別中。 其實Java的抽象類別本來就是Template模式,因此使用很普遍。而且很容易理解和使用,我們直接以示例開始: public abstract class Benchmark{  /**  * 下面操作是我們希望在子類別中完成  */  public abstract void benchmark();
Java设计模式23种设计模式详解
08-18
"Java设计模式23种设计模式详解" Java设计模式是软件工程的基石,项目中合理的运用设计模式可以完美的解决很多问题。设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计...
java23种设计模式详解
01-19
java23种设计模式详解附带所有代码实现,适合初学者,请点个赞,谢谢
基于Java语言的23种设计模式设计源码详解
最新发布
10-09
该项目是一个详尽的Java设计模式学习资源,包含153个文件,其中包含142个Java源文件,用于实现Java语言下的23种经典设计模式,包括工厂模式、适配器模式、装饰者模式等多种模式,并提供了相应的XML、TXT、JSON等辅助...
java23种设计模式详解+源码(绝对详解)
08-10
在Java编程中,有23种经典的GoF(Gang of Four)设计模式,它们被分为三大类:创建型、结构型和行为型。本资源集合了这些模式的详细解释与源码分析,旨在帮助开发者深入理解和应用设计模式。 1. 创建型模式...
23种设计模式23种设计模式
07-27
23种设计模式23种设计模式23种设计模式23种设计模式
【Java基础】浅谈常见设计模式
weixin_30901729的博客
06-29 1368
Num1:单例模式 基本概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 常见写法: 懒汉式 public class Singleton { /* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载 */ private static Singleton instance = null; /* 私有构造方法,防止被实例化 *...
设计模式
ThinkWon的博客
07-22 1万+
设计模式简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性...
最常用的设计模式
aishalv8524的博客
04-29 136
最常用的设计模式设计模式通常是对于某一类的软件设计问题的可重用的解决方案,将设计模式引入软件设计和开发过程,其目的就在于要充分利用已有的软件开发经验。 最常用的设计模式根据我的经验我把我经常用到的设计模式在这里做个总结,按照我的经验,它们的排序如下:1)单件模式、2)抽象工厂模式和工厂模式、3)适配器模式、4)装饰模式、5)观察者模式、6)外观模式 其他模式目前还很少用到。单件模式这是...
超详细:JAVA常用的设计模式汇总
AT弄潮儿
03-01 4320
上次我写的一篇博客《史上最最最简单的MVP教程》很多初学者看了都说简单易懂,我也觉得挺开心的,以后会写出更好的博客来帮助更多的人。 单例模式 简单点说,就是一个应用程序中,某个类的实例对象只有一个,你没有办法去new,因为构造器是被private修饰的,一般通过getInstance()的方法来获取它们的实例。getInstance()的返回值是一个对象的引用,并不是一个新的实例,所以
23种设计模式
nameofcsdn的博客
02-16 5491
一,设计模式 设计模式(Design Pattern)是一套被反复使用的、多数人知晓的、经过分类编目的代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解。 二,23种设计模式的分类 根据其目的可分为创建型、结构型和行为型三种设计模式。 创建型模式主要用于创建对象。 结构型模式主要用于处理类或对象的组合。 行为型模式主要用于描述对类或对象怎样交互和怎样分配职责。 根据范围,即模式主要是用于处理类之间关系还是处理对象之间的关系,可分为类模式和对象模式两种: ......
几种常用的设计模式介绍
sengeiou的专栏
11-16 16万+
几种常用的设计模式介绍 1.    设计模式的起源 最早提出“设计模式”概念的是建筑设计大师亚力山大Alexander。在1970年他的《建筑的永恒之道》里描述了投计模式的发现,因为它已经存在了千百年之久,而现代才被通过大量的研究而被发现。 在《建筑的永恒之道》里这样描述:模式是一条由三个部分组成的通用规则:它表示了一个特定环境、一类问题和一个解决方案之间的关系。每一个模式描述了一个不断
写文章

热门文章

  • Qt嵌入浏览器—QWebEngineView实现浏览器基本功能(内含代码例子) 14890
  • 网口通讯与串口通讯(内含代码) 12634
  • 可变参数:va_list(),va_start(),va_arg(),va_end() 详细解析 12073
  • 【C++】libwebsockets库的简易教程(附源码) 10497
  • (一)WebSocket 详解,以及用QWebSocket 实现服务端和客户端(含代码例子) 9231

分类专栏

  • 书籍 4篇
  • 项目架构 1篇
  • C/C++ 11篇
  • c++新特性 8篇
  • VS+QT+MFC 16篇
  • STL 15篇
  • 数据结构&算法 3篇
  • QT 33篇
  • 网络编程 13篇
  • OpenCV 18篇
  • 进程线程 5篇
  • 设计模式 23篇
  • Linux 11篇
  • Flutter 4篇
  • 智能+图像处理 3篇
  • 工具 3篇
  • 面试必备 4篇
  • 话题聊聊 2篇

最新评论

  • BMP图像处理(jpeg转bmp,以及bmp图片缩放,附代码)

    Ivy_belief: 什么意思?

  • BMP图像处理(jpeg转bmp,以及bmp图片缩放,附代码)

    gxbbwsy: 请问能转uints=1的JPG到BMP吗?

  • MVC、MVP、MVVM三种模式的介绍及区别(代码例子说明)

    千鸟521: mvc和mvp实例代码有区别吗?

  • Ubuntu下不能切换中文,qt creator无法输入中文,sogo输入法(详细步骤)

    Ivy_belief: 有可能你的ubantu还没有对应的安装包工具,你可以安装下。

  • Ubuntu下不能切换中文,qt creator无法输入中文,sogo输入法(详细步骤)

    404killer: Failed to download package files 我该怎么办

最新文章

  • Windows下的Qt编译器——MinGW和MSVC的区别
  • 《鸟哥的Linux私房菜基础篇》---2 Linux的档案与目录
  • 《鸟哥的Linux私房菜基础篇》---1 Linux的介绍与如何开启Linux之路
2024年25篇
2023年117篇
2022年14篇
2021年4篇
2019年16篇
2017年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳坪山网站建设公司绵阳网站搜索引擎优化建设网站怎么用外链优化沧州淮安网站优化织梦网站需要优化宝山区公司网站优化定制网站优化推广的注意事项有哪些新手站长怎么优化网站关键词企业网站seo优化方法找哪些免费黑客网站优化百度统计网站速度优化企业网站优化哪家快河源网站优化厂家张店淘宝网站优化桐梓网站优化推广公司茂名网站优化热线舟山普陀网站优化南海网站优化电话泸州营销型网站优化方案重庆搜索网站优化石家庄瓷砖行业网站优化推广方案南沙企业网站推广优化方案秦皇岛商城网站优化哪家好权重高的网站如何优化京山网站优化开发环保节能网站优化费用深圳海外网站优化方法做网站优化网站得会什么青岛教育网站优化大访问量网站优化长治网站优化哪家专业香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化