设计模式概述

简介: 设计模式概述

系列文章目录


第一章 设计模式概要


前言


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


一、单例模式简述


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

总结


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

目录
相关文章
|
设计模式 算法 程序员
设计模式的概述及各个模式的功能介绍
设计模式的概述及各个模式的功能介绍
121 0
|
7月前
|
设计模式 数据可视化 测试技术
设计模式概述
设计模式概述
设计模式概述
|
6月前
|
设计模式 算法 Java
Java设计模式:核心概述(一)
Java设计模式:核心概述(一)
|
7月前
|
设计模式 安全
设计模式概述
设计模式概述
52 0
|
设计模式 数据可视化 程序员
设计模式概述、UML图、软件设计原则
设计模式概述 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫·亚历山大(Christopher Alexander)在他的著作《建筑模式语言:城镇、建筑、构造》中描述了一些常见的建筑设计问题,并提出了 253 种关于对城镇、邻里、住宅、花园和房间等进行设计的基本模式。 1990年软件工程界开始研讨设计模式的话题,后来召开了多次关于设计模式的研讨会。直到1995 年,艾瑞克·伽马(ErichGamma)、理査德·海尔姆(Richard Helm)、拉尔夫·约翰森(Ra
76 0
|
设计模式 开发框架 算法
设计模式概述以及 23种设计模式的介绍
设计模式概述以及 23种设计模式的介绍
447 0
设计模式概述以及 23种设计模式的介绍
|
设计模式 算法 程序员
设计模式之设计模式概述
设计模式之设计模式概述
113 0
|
设计模式 算法 程序员
java-23种设计模式概述【软件设计模式基本介绍(是什么、作用、优点)、模式的分类和介绍】
java-23种设计模式概述【软件设计模式基本介绍(是什么、作用、优点)、模式的分类和介绍】
352 0
|
设计模式 开发框架 算法
【Java设计模式 设计模式与范式】设计模式概述、基本原则及分类
【Java设计模式 设计模式与范式】设计模式概述、基本原则及分类
73 0
|
设计模式 uml
设计模式——概述、UML图、原则(二)
设计模式——概述、UML图、原则
185 0
设计模式——概述、UML图、原则(二)

热门文章

最新文章

  • 1
    设计模式转型:从传统同步到Python协程异步编程的实践与思考
    58
  • 2
    C++一分钟之-设计模式:工厂模式与抽象工厂
    47
  • 3
    《手把手教你》系列基础篇(九十四)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-下篇(详解教程)
    54
  • 4
    C++一分钟之-C++中的设计模式:单例模式
    65
  • 5
    《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)
    43
  • 6
    《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
    70
  • 7
    Java面试题:结合设计模式与并发工具包实现高效缓存;多线程与内存管理优化实践;并发框架与设计模式在复杂系统中的应用
    62
  • 8
    Java面试题:设计模式在并发编程中的创新应用,Java内存管理与多线程工具类的综合应用,Java并发工具包与并发框架的创新应用
    43
  • 9
    Java面试题:如何使用设计模式优化多线程环境下的资源管理?Java内存模型与并发工具类的协同工作,描述ForkJoinPool的工作机制,并解释其在并行计算中的优势。如何根据任务特性调整线程池参数
    52
  • 10
    Java面试题:请列举三种常用的设计模式,并分别给出在Java中的应用场景?请分析Java内存管理中的主要问题,并提出相应的优化策略?请简述Java多线程编程中的常见问题,并给出解决方案
    121