系统架构设计师 - 23种设计模式(GOF)

文章目录

  • 总览
  • 创建型(5种)
    • 工厂方法 Factory Method
    • 抽象工厂 Abstract Factory
    • 生成器模式 Builder
    • 原型模式 Prototype
    • 单例模式 Singleton
  • 结构型(7种)
    • 适配器 Adapter
    • 桥接 Bridge
    • 组合模式 Composite
    • 装饰者模式 Decorator
    • 外观模式 Facade
    • 享元模式 Flyweight
    • 代理模式 Proxy
  • 行为型(11种)
    • 解释器 Interpretor
    • 模板方法 Template Method
    • 责任链 Chain Of Reponsibility
    • 命令模式 Commond
    • 迭代器 Interator
    • 中介者 Mediator
    • 备忘录 Memento
    • 观察者模式 Observer
    • 状态模式 State
    • 策略模式 Strategy
    • 访问者模式 Visitor

总览

在这里插入图片描述

创建型(5种)

工厂方法 Factory Method

定义一个创建类的接口 , 允许 在不确定一个类的具体实例的情况下创建 并使用它 ,让子类决定具体实例化的类型;

抽象工厂 Abstract Factory

定义一个接口 , 创建 一系列相关 或 互相依赖 的对象 , 而无需指定它们的具体类;

生成器模式 Builder

将类的构建过程 与 具体表现 分离 ,相同的过程可以创建不同的表示;

原型模式 Prototype

用原型实例 指定创建类的对象,并通过拷贝原型来获取新的对象;

单例模式 Singleton

保证一个类的实例 全局只有一个 , 并提供一个访问它的全局访问点 ;

结构型(7种)

适配器 Adapter

将一个类的接口转换成客户需要的另一个接口 , 使原来由于接口不能兼容的类在一起工作;

桥接 Bridge

将 抽象部分 和 实现部分 分离, 使两者可以独立的变化

组合模式 Composite

将对象组合成树形结构 以描述 部分和整体的 层次关系 , 使得操作单个对象 和 操作组合对象 具有一致性;

装饰者模式 Decorator

动态的给对象添加额外的职能;

外观模式 Facade

给一系列接口的交互过程提供统一的 接口 (访问形式) ;

享元模式 Flyweight

大量 细粒度 对象的共享技术;

代理模式 Proxy

为其他对象提供一种代理 , 以控制它的访问;

行为型(11种)

解释器 Interpretor

给定一个语言 定义其文法表示 , 并定义一个解释该语言的解释器 , 解释器通过该标识解释 语言中的句子 ;

模板方法 Template Method

定义一系列算法的骨架 , 并将其中一些特定的步骤延迟到子类去实现 ; 使得 子类可以在不改变算法的结构的前提下 , 重新定义具体步骤的实现方式;

责任链 Chain Of Reponsibility

避免请求者和接收者耦合在一起 , 定义多个对象都有能力处理请求 , 并将它们以链式结构连接 , 在链上传递请求 , 直到有一个对象处理请求为止;

命令模式 Commond

将一个请求封装成一个命令 , 使用不同的请求实现参数化 , 以支持 记录 / 撤回 / 重做 / 事务 / 队列处理

迭代器 Interator

提供一个方法顺序访问 一个组合对象的各个元素 , 而不暴露该对象的内部表示;

中介者 Mediator

定义一个中介对象 , 封装一系列对象间的交互 , 使各对象之间不需要显示的调用 ,松散耦合 , 可以独立的改变它们之间的交互 ;

备忘录 Memento

在不破坏封装性的前提下 , 捕获一个对象的内部状态 , 并在对象外保存其内部状态 , 以在合适的时机 恢复对象到保存的状态

观察者模式 Observer

定义对象间一对多的依赖关系 , 当被依赖对象状态发生变化时 , 所有依赖它的对象都能收到通知 并 自动更新 ;

状态模式 State

允许对象在内部状态改变时修改自身的行为 ;

策略模式 Strategy

定义一系列算法 , 并把它们一个个封装起来 , 可以互相替换;

访问者模式 Visitor

数据结构 和 数据访问 分离;

23种设计模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515742.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何优雅的理解HBase和BigTable

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 学习 HBase 最难的地方在于要让你的脑子真正理解它是什么。 HBase:Google BigTable 的开源实现 我们经常会把关…

如何使用Trie树,设计实践Google一样的输入提示功能

来源 | 搜索技术责编 | 小白Google和百度都支持输入提示功能,辅助你快速准确的输入想要的内容。如下:输入“五一”,会提示“五一劳动节”等。那如何实现谷歌这样的输入提示功能呢?分析下输入提示的功能需求当输入前面的词A&#x…

计算机与网络

文章目录1.计算机组成2.操作系统进程管理存储管理设备管理文件管理3.数据库系统关系代数数据仓库4.计算机网络1.计算机组成 计算机组成:控制器、运算器、存储设备、输入设备、输出设备。 控制器功能程序计数器(PC)下条要执行指令的地址指令…

物联网与万物互联有什么区别?

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! IoE与IoT:有什么区别? 除非您是专家,否则物联网(IoT)和万物互联(IoE)之间几乎没有什么区别。但是&am…

宝兰德中间件同台机器多个实例安装

文章目录1. 启动多实例2. 修改实例13. 修改实例21. 启动多实例 同一台机器同时启动两个示例ins-1和ins-2需要修改和规划端口避免冲突,端口配置在中间件安装目录下的conf/server.conf文件中。示例端口规划如下: 只需要修改http管理端口、http服务端口、J…

5G网络打破专有系统的桎梏

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 随着技术的不断变迁,专有无线接入网络的时代正在逐渐消失。运营商希望能在降低成本的同时增加灵活性,…

为普及再助一把力!《2021年中国低代码/无代码市场研究报告》正式发布

开发能力“下放”,普通人也能通过“拖拉拽”快速搭建软件——在经历了大型套装软件、软件SaaS化之后,我国企业数字化进程即将迎来低代码/无代码开发的全新时代。 1月19日,海比研究院、中国软件网联合中国软件行业协会在北京举行《2021年中国…

微信小程序限制当前位置和目的地的距离

获取当前位置经纬度 onLoad: function (options) {var that this;campaign_id campaign_idwx.getLocation({type: wgs84,success: function (res) {console.log(res)lat1 res.latitude,lng1 res.longitude}})},通过点击事件打开地图选择位置 site: function () {var that …

软件设计师 - 数据库关系代数运算

文章目录1.交(∩)2.并(∪)3.差(-)4.投影(π)4.1.例子5.选择(σ)5.1.例子6.连接(⋈)6.1.等值连接6.2.自然连接6.4.外连接6.3.内连接7.笛…

阿里云CDN六大边缘安全能力,全力助推政企数字化转型

6月9日,2020年阿里云线上峰会召开。阿里云智能总裁张建锋认为,数字化已经成为中国经济的主要驱动力,疫情让政府、企业都认识到数字化的迫切性。在峰会上,阿里云CDN正式对外发布基于CDN构建的六大边缘安全能力,全力助推…

阿里云发布第七代云服务器ECS,整机算力提升160%

2020年6月9日,阿里云重磅发布第七代ECS企业级高主频实例以及新一代弹性裸金属云服务器,目前已启动邀测。 新一代的高主频实例搭载最新一代英特尔至强可扩展处理器(代号Cedar Island)以及阿里云自研的第三代神龙云服务器架构&…

PageHelper循环依赖 com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration

在用pageHelper的时候突然遇到个问题,启动项目后出现这个情况: springboot2.6好像禁止循环依赖还是啥的,翻来翻去没看到解决办法,后面去pageHelper github看,才看到最新版本已经解决了这个问题。 解决方案&#xff…

获奖名单出炉,快来看看有没有你!

这次千万别再错过!周五福利日,人人都可免费领会员!详情戳这里奖品多多,不仅有CSDN月卡会员、CSDN年卡会员,还有5w现金奖品等你瓜分!邀请越多奖品越多!本周五上午11:00,准点开放领取&…

看我如何用Dataphin实现自动化建模

前言:更多关于数智化转型、数据中台内容可扫码加群一起探讨 阿里云数据中台官网 https://dp.alibaba.com/index 作者:数据小海豚 随着大数据趋势的迅速增长,数据的重要性与日俱增,企业内看数据、用数据的诉求越来越强烈&#x…

EasyExcel 导出时 Converter转换器 注入 ExcelContentProperty 为null

异常现象: Converter转换器 注入 ExcelContentProperty 为null 直接原因: 调用**.head()**方法,重写表头样式,就导致ExcelContentProperty 注入失败。 源码原因: todo 解决办法: todo

SaaS模式云数据仓库:持续保护云上数据及服务安全

2020年6月9日,阿里云 MaxCompute 全新发布企业级新能力,在成本、性能、安全方面,持续定义企业级SaaS模式云数据仓库,通过 “云数据仓库” 的新模式,帮助企业实现数字经济新优势。 据介绍,最新发布的算力资…

springboot 集成flowable去除权限认证

参考SpringBoot集成Flowable-modeler模块并去除权限认证(二) /** * 单体启动类(采用此类启动项目为单体模式) */ Slf4j //排除flowable带的权限认证 SpringBootApplication(exclude {SecurityAutoConfiguration.class, org.springframework.boot.act…

看穿容器的外表,Linux容器实现原理演示

来源 | 多选参数责编 | 程序锅头图 | 下载于视觉中国容器技术的核心功能,就是通过约束和修改进程的动态表现,从而为其创造出一个“边界”也就是独立的“运行环境”。下面我们使用 C 语言和 Namespace 技术来手动创建一个容器,演示 Linux 容器…

小时候都想当科学家后来只有他做到了——对话阿里云MVP朱祺

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 简介: 对朱祺我是好奇的。初次交流时,仅限于一个积极活跃、涉猎广泛的印象,拥抱新技术的传…