博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最简明的设计模式
阅读量:3960 次
发布时间:2019-05-24

本文共 2450 字,大约阅读时间需要 8 分钟。

什么是设计模式

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

设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。

简单说:

  • 模式:在某些场景下,针对某类问题的某种通用的解决方案。

  • 场景:项目所在的环境

  • 问题:约束条件,项目目标等

  • 解决方案:通用、可复用的设计,解决约束达到目标。

设计模式的三个分类

  • 创建模式:对类的实例化过程的抽象。一些系统在创建对象时,需要动态地决定怎样创建对象,创建哪些对象,以及如何组合和表示这些对象。创建模式描述了怎样构造和封装这些动态的决定。包含类的创建模式和对象的创建模式。

  • 结构模式:描述如何将类或对象结合在一起形成更大的结构。分为类的结构模式和对象的结构模式。类的结构模式使用继承把类,接口等组合在一起,以形成更大的结构。类的结构模式是静态的。对象的结构模式描述怎样把各种不同类型的对象组合在一起,以实现新的功能的方法。对象的结构模式是动态的。

  • 行为模式:对在不同的对象之间划分责任和算法的抽象化。不仅仅是关于类和对象的,并是关于他们之间的相互作用。类的行为模式使用继承关系在几个类之间分配行为。对象的行为模式则使用对象的聚合来分配行为。

模式分类表:

所属类型 模式名称 模式 简单定义
创建模式 Abstract Factory 抽象工厂 提供用于创建相关对象系列的接口
Builder 生成器 使用简单对象构建复杂对象
Factory Method 工厂方法 将对象的实例化延迟到用于创建实例的专用函数
row 2 col 2 对象池 实例化并维护一组相同类型的对象实例
Singleton 单例 将类型的实例化限制为一个对象
结构模式 Adapter 适配器 适配另一个不兼容的接口来一起工作
Bridge 桥接 将接口与其实现分离,以便两者可以独立变化
Composite 组合 封装并提供对许多不同对象的访问
Decorator 装饰 静态或动态地向对象添加行为
Facade 外观 使用一种类型作为许多其他类型的API
Flyweight 享元 运用共享技术有效地支持大量细粒度的对象
Proxy 代理 为对象提供代理以控制其操作
行为模式 Chain of Responsibility 职责链 避免通过提供超过对象处理请求的机会来将发送方与接收方耦合
Command 命令 捆绑命令和参数以便稍后调用
Mediator 中介者 连接对象并充当代理
Memento 备忘录 生成可用于返回先前状态的不透明令牌
Observer 观察者 提供回调以通知事件/数据更改
Registry 注册 跟踪给定类的所有子类
State 状态 根据内部状态封装同一对象的不同行为
Strategy 策略 允许在运行时选择算法的行为
Template 模板 定义一个将某些方法推迟到子类的框架类
Visitor 访问者 将算法与其运行的对象分开
同步模式 Condition Variable 条件变量 为线程提供一种机制,以暂时放弃访问以等待某些条件
Lock/Mutex 锁定/互斥 对资源实施互斥限制以获得独占访问权限
Monitor 监视器 互斥和条件变量模式的组合
Read-Write Lock 读写锁定 允许并行读取访问,但仅对资源的写入操作进行独占访问
Semaphore 信号 允许控制对公共资源的访问
并行模式 N-Barrier N-二道闸 阻止进程继续进行,直到所有N个进程都到达屏障
Bounded Parallelism 有界并行 完成大量资源限制的独立任务
Broadcast 广播 把一个消息同时传输到所有接收端
Coroutines 协同程序 允许在特定地方暂停和继续执行的子程序
Generators 生成器 一次性生成一系列值
Reactor 反应 服务处理程序使用I/O多路复用策略来同步、有序的处理一个或多个客户端并发请求
Parallelism 并行 完成大量独立任务
Producer Consumer 生产者消费者 从任务执行中分离任务
Scheduler 调度器 协调任务步骤
消息传递模式 Fan-In 扇入 该模块直接调用上级模块的个数,像漏斗型一样去工作
Fan-Out 扇出 该模块直接调用的下级模块的个数
Futures & Promises Futures & Promises 扮演一个占位角色,对未知的结果用于同步
Publish/Subscribe Publish/Subscribe 将信息传递给订阅者
Push & Pull Push & Pull 把一个管道上的消息分发给多人
稳定模式 Bulkheads Bulkheads 实施故障遏制原则(即防止级联故障)
Circuit-Breaker 断路器 当请求有可能失败时,停止流动的请求
Deadline 截止日期 一旦响应变缓,允许客户端停止一个正在等待的响应
Fail-Fast机制 快速失败 检查请求开始时所需资源的可用性,如果不满足要求则失败
Handshaking 握手 询问组件是否可以承受更多负载,如果不能,则请求被拒绝
Steady-State 稳定状态 为每一个服务积累一个资源,其它服务必须回收这些资源
剖析模式 Timing Functions 时序功能 包装函数并记录执行
成例 Functional Options 功能选项 允许给默认值创建clean API和惯用重载
反模式 级联故障 级联故障 互连部件系统中的故障,其中部件的故障导致多米诺骨牌效应

转载地址:http://tzhzi.baihongyu.com/

你可能感兴趣的文章