元月's blog 元月's blog
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多

元月

临渊羡鱼,不如退而结网
首页
  • 基础
  • 并发编程
  • JVM
  • Spring
  • Redis篇
  • Nginx篇
  • Kafka篇
  • Otter篇
  • Shardingsphere篇
  • 设计模式
  • MySQL
  • Oracle
  • 基础
  • 操作系统
  • 网络
  • 数据结构
  • 技术文档
  • Git常用命令
  • GitHub技巧
  • 博客搭建
  • 开发工具
更多
  • 设计模式

    • 设计模式简介
    • 设计模式之单例模式
    • 设计模式之工厂模式
    • 设计模式之原型模式
    • 设计模式之建造者模式
    • 设计模式之适配器模式
    • 设计模式之桥接模式
    • 设计模式之组合模式
    • 设计模式之装饰器模式
    • 设计模式之外观模式
    • 设计模式之享元模式
    • 设计模式之代理模式
    • 设计模式之责任链模式
    • 设计模式之命令模式
    • 设计模式之解释器模式
    • 设计模式之迭代器模式
    • 设计模式之中介者模式
    • 设计模式之备忘录模式
    • 设计模式之观察者模式
    • 设计模式之状态模式
    • 设计模式之策略模式
    • 设计模式之模版模式
    • 设计模式之访问者模式
    • 设计模式辨析篇
      • 一、包装设计模式(装饰器模式、适配器模式、外观模式、代理模式)的区别
      • 二、观察者模式和发布订阅模式的区别
      • 三、状态模式和策略模式的区别
      • 四、单例模式和享元模式的区别?
  • 高可用

  • 系统设计
  • 设计模式
元月
2022-08-17
目录

设计模式辨析篇

# 设计模式辨析篇

# 一、包装设计模式(装饰器模式、适配器模式、外观模式、代理模式)的区别

  • 装饰器模式 将一个对象包装起来,增加新的行为和责任

    不改变接口,但加入责任

  • 适配器模式 将一个对象包装起来,转换其接口

    将一个接口转成另一个接口,改变接口使其符合客户期望

  • 外观模式 将一群对象包装起来,简化其接口

    让接口更简单,提供子系统的一个简化接口

  • 代理模式 将一个对象包装起来,控制和管理对它的访问

    控制和管理对对象的访问

    参考文档:包装篇(装饰模式、适配器模式、外观模式、代理模式) (opens new window)

# 二、观察者模式和发布订阅模式的区别

从表面上看:

  • 观察者模式里,只有两个角色 —— 观察者 + 被观察者
  • 而发布订阅模式里,却不仅仅只有发布者和订阅者两个角色,还有一个经常被我们忽略的 —— Broker

从使用层面上讲:

  • 观察者模式,多用于单个应用内部
  • 发布订阅模式,多用于跨应用模式(cross-application pattern),比如我们常用的消息中间件

# 三、状态模式和策略模式的区别

策略模式和状态模式都属于行为模式,很相似,它们的区别主要在于行为上,而不是结构上

策略模式 定义了一组可互相代替的算法;采用何种策略由外界(客户端)决定

状态模式 整体构成一个流程,各个流程有一定的顺序,状态的变迁是由对象的内部条件决定

# 四、单例模式和享元模式的区别?

单例模式属于创建型模式,保证一个类只有一个实例。而享元模式是结构型模式,重在减少内存占用和提高性能,一个类不一定只有一个实例。

#设计模式
设计模式之访问者模式
高可用架构如何实现限流?

← 设计模式之访问者模式 高可用架构如何实现限流?→

最近更新
01
otter二次开发-支持按目标端主键索引Load数据
08-03
02
mvnw简介
06-21
03
gor流量复制工具
06-03
更多文章>
Theme by Vdoing | Copyright © 2022-2024 元月 | 粤ICP备2022071877号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式