设计模式概述

系列文章目录

第一章 设计模式概要


文章目录


前言

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


一、单例模式简述

  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. 责任链模式下有可能会产生谁都无法处理的请求

总结

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

相关推荐
蓝瑟8 小时前
告别重复造轮子!业务组件多场景复用实战指南
前端·javascript·设计模式
Arva .10 小时前
讲一下 Spring 中用到的设计模式
java·spring·设计模式
繁华似锦respect11 小时前
lambda表达式中的循环引用问题详解
java·开发语言·c++·单例模式·设计模式·哈希算法·散列表
星月IWJ15 小时前
领域驱动设计学习
java·学习·设计模式
_dindong16 小时前
Linux网络编程:Reactor反应堆模式
linux·服务器·网络·设计模式·php
雨中飘荡的记忆16 小时前
Step Builder模式实战
java·设计模式
Eren7Y琳16 小时前
开箱即用构建应用环境:openEuler易获得性深度验证
redis·设计模式·架构
Unstoppable2217 小时前
八股训练营第 39 天 | Bean 的作用域?Bean 的生命周期?Spring 循环依赖是怎么解决的?Spring 中用到了那些设计模式?
java·spring·设计模式
闲人编程17 小时前
微服务API网关设计模式
python·缓存·微服务·设计模式·系统安全·api·codecapsule
__万波__18 小时前
二十三种设计模式(八)--装饰器模式
java·设计模式·装饰器模式