设计模式概述

系列文章目录

第一章 设计模式概要


文章目录


前言

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


一、单例模式简述

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

总结

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

相关推荐
wrx繁星点点2 小时前
状态模式(State Pattern)详解
java·开发语言·ui·设计模式·状态模式
金池尽干4 小时前
设计模式之——观察者模式
观察者模式·设计模式
也无晴也无风雨4 小时前
代码中的设计模式-策略模式
设计模式·bash·策略模式
捕鲸叉13 小时前
MVC(Model-View-Controller)模式概述
开发语言·c++·设计模式
wrx繁星点点13 小时前
享元模式:高效管理共享对象的设计模式
java·开发语言·spring·设计模式·maven·intellij-idea·享元模式
凉辰13 小时前
设计模式 策略模式 场景Vue (技术提升)
vue.js·设计模式·策略模式
菜菜-plus13 小时前
java设计模式之策略模式
java·设计模式·策略模式
暗黑起源喵13 小时前
设计模式-迭代器
设计模式
lexusv8ls600h15 小时前
微服务设计模式 - 网关路由模式(Gateway Routing Pattern)
spring boot·微服务·设计模式
sniper_fandc18 小时前
抽象工厂模式
java·设计模式·抽象工厂模式