设计模式概述

系列文章目录

第一章 设计模式概要


文章目录


前言

通过设计模式,能够使代码的逻辑性更强,更简洁。常见的设计模式:单例模式、工厂模式、策略模式、观察者模式、适配器模式、代理模式、责任链模式等


一、单例模式简述

  1. 全局只有一个实例的程序设计模式

特点

  1. 全局只有一个实例
  2. 不允许外部初始化

应用场景

  1. 数据库连接池,可用单例模式确保全局只有一个连接池
  2. 应用程序配置文件对象,可用单例模式确保全局只用一个配置文件对象

单例模式实例初始化模式

  1. 懒汉模式 :懒加载 不用到这个实例,不去做初始化,不会去分配内存,不会去创建实例,不回去使用资源。时间换空间。
  2. 饿汉模式  :不管你用不用,应用程序初始化的时候就做初始化。调用的时候不用去判断存不存在,一定是存在的。 空间换时间

分析

懒汉模式, 非线程安全的。加载配置文件不会造成重要影响,在并发调用的时候,进行初始化。1.通过枷锁确保安全。2. 使用sync.Once

饿汉模式,不存在线程安不安全问题。

二、工厂模式

  1. 提供创建对象的方式,而无需暴露对象的具体实现
  2. 工厂模式:简单工厂、工厂方法模式

工厂模式的本质就是解耦。

工厂模式的作用

  1. 将对象的创建和使用分离,降低了耦合度,使得系统更加灵活
  2. 提高系统的可维护性和扩展性,支持增加新的产品类
  3. 有助于管理对象之间的依赖关系

工厂模式的缺点

  1. 增加了代码的复杂度和维护难度

三、策略模式

  1. 策略模式是一种行为设计模式,它定义一系列算法并将每个算法分别封装,使得算法之间可以相互替换。

应用场景

  1. 处理不同的算法,例如:多种排序算法,可按需选择合适的排序算法
  2. 实现业务规则,例如:判断用户是否满足领取优惠券的条件、计算用户积分等
  3. 避免过多的if-else,可采取策略模式来处理

四、观察者模式(订阅发布模式)

  1. 观察者模式即发布订阅模式,发布者发布一个主题,观察者订阅主题并接收更新通知

应用场景

  1. 配置信息更新
  2. 订阅/发布系统

五、适配器模式

  1. 适配器模式允许将一个类的接口转换成客户端所期望的另一种接口。通常应用于接口不兼容的情况下.

应用场景

  1. 日志适配器:将应用程序中的日志发送到不同的目标
  2. 数据库适配器:使得应用程序可以轻松切换数据库引擎同时保持api接口不变
  3. 缓存适配器:实现跨多个缓存服务商的一致性缓存API,比如 redis与memcached

六、代理模式

  1. 代理模式允许在不改变原始对象接口的前提下,通过引入一个代理对象来控制对原始对象的访问。

解决问题

主要是通过代理层来对原有的也就是我们真实的对象去做一个访问控制。或者是做一个功能增强活扩展。

特点

  1. 可以隐藏真实的对象
  2. 在不改变真实对象的前提下,对其进行扩展和功能增强

七、责任链模式

  1. 责任链模式是一种行为设计模式,用于将请求从一个对象传递到另一个对象链上,直到其中一个对象能够处理该请求。

应用场景

  1. 不确定请求处理对象的场景

注意

  1. 标准的责任链请求一旦被处理则返回,不会再被传递和处理了
  2. 可以通过该模式的变形传递处理请求
  3. 责任链模式下有可能会产生谁都无法处理的请求

总结

以上就是今天要讲的内容,本文仅仅简单介绍了常用的几种设计模式和模式使用场景

相关推荐
Michael_lcf15 小时前
Agent设计模式:思考-行动-观察循环的本质与局限
设计模式·agent设计模式·agent设计模式的本质
丰锋ff15 小时前
设计模式学习笔记
笔记·学习·设计模式
米啦啦.17 小时前
设计模式/
观察者模式·单例模式·设计模式·工厂模式
QuZhengRong18 小时前
【AI】Agent 全栈进阶|Agent 设计模式
人工智能·学习·设计模式·llm·agent
码匠许师傅19 小时前
【设计模式精讲】2. 设计原则基石:SOLID 与几条关键原则
java·设计模式·log4j
AI人工智能+电脑小能手21 小时前
大白话说Java设计模式-41-备忘录模式(源码剖析篇)
java·设计模式·备忘录模式·源码分析·serializable·undo log·spring statemachine
yinchnag1 天前
CRTP:奇异递归模板模式在 Go 模块系统中的实现
设计模式·go
AI人工智能+电脑小能手1 天前
大白话说Java设计模式-40-备忘录模式(业务实战篇)
java·设计模式·事务回滚·备忘录模式·状态保存·spring transactional·购物车快照
bryant_meng2 天前
【Codex】Part 19 — Codex Prompt Design Patterns
设计模式·prompt·playbook·结果优先·用证据定义完成
AI人工智能+电脑小能手2 天前
大白话说Java设计模式-38-迭代器模式(业务实战篇)
java·设计模式·迭代器模式·stream·遍历封装·集合通用·分页遍历