刷新
Spring 中的发布-订阅模式

博主头像 发布订阅模式是怎样的? 现在市面上流行的很多消息中间件就是采用的该种模式,这种模式 在实际业务中 将 事件发布者(Publisher) 与 事件订阅者 (Subscriber)通过额外的事件通道(Event Channel)来解耦,其基本原理与先前提到的观察者模式有些许类似,但发布订阅模式额外存在了 ...

java 适配器模式

博主头像 适配器模式(Adapter Pattern) 结构型设计模式,见名知意,就是两个不兼容的接口之间的桥梁。它结合了两个独立接口的功能。 主要解决:常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。 关键代码:适配器继承或依赖已有的对象,实现想要的目标接口。 优点: 1、可 ...

java 策略模式

博主头像 策略模式(Strategy Pattern) 指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。将每个算法封装在独立的类中,使得它们可以互相替换。可以在运行时根据需要选择不同的算法,而不需要修改客户端代码。 主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以 ...

java 单例模式

博主头像 单例模式(Singleton Pattern) 是 Java 中最简单的设计模式之一,这种类型的设计模式属于创建型模式。目的是确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。这样做可以节省系统资源,并且保证某些类在系统中只存在一个实例。 主要解决:一个全局使用的类频繁地创建与销毁。 如何 ...

java 抽象工厂模式

博主头像 抽象工厂模式(Abstract Factory Pattern): 是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工 ...

设计模式学习(一)单例模式补充——单例模式析构

博主头像 目录前言无法调用析构函数的原因改进方法内嵌回收类智能指针局部静态变量参考文章 前言 在《单例模式学习》中提到了,在单例对象是通过new关键字动态分配在堆上的情况下,当程序退出时,不会通过C++的RAII机制自动调用其析构函数。本文讨论一下这种现象的原因以及解决方法。 无法调用析构函数的原因 在DCL ...

设计模式学习(一)单例模式的几种实现方式

博主头像 目录前言饿汉式懒汉式懒汉式DCLP局部静态式(Meyers' Singleton)单例模板参考文章 前言 单例模式,其核心目标是确保在程序运行的过程中,有且只有存在一个实例才能保证他们的逻辑正确性以及良好的效率。因此单例模式的实现思路就是确保一个类有且只有一个实例,并提供一个该实例的全局访问点。 单 ...

C语言中抽象函数与具体实现的命名与组织

博主头像 C语言中抽象函数与具体实现的命名与组织 在C语言的项目开发中,尤其是嵌入式系统和开源软件项目里,合理地命名和组织抽象函数及其具体实现对于提高代码的可读性、可维护性和可扩展性至关重要。以下是关于如何在这些项目中有效地处理抽象和实现的一些建议: 抽象函数与具体实现的区分 API作为接口:API定义了一组 ...

什么是函数回调

博主头像 什么是函数回调? 介绍 函数回调是一种编程概念,它描述的是这样一个过程:一个函数(称为回调函数)作为参数传递给另一个函数(称为调用函数),当满足一定条件或者在某个特定时刻,调用函数会调用传递过来的回调函数。这种机制允许程序员在编写代码时,能够在不同的上下文中重用函数,同时也能实现异步处理、事件驱动编 ...

[设计模式]创建型模式-抽象工厂模式

博主头像 简介 抽象工厂模式是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式将一组具有共同主题的单个工厂封装起来,它提供接口用于创建相关或依赖对象的家族,而不需要指定具体的类。 抽象工厂模式包含以下几个核心角色: 抽象工厂(Abstract Facto ...

我们在SqlSugar开发框架中,用到的一些设计模式

博主头像 我们在《SqlSugar开发框架》中,有时候都会根据一些需要引入一些设计模式,主要的目的是为了解决问题提供便利和代码重用等目的。而不是为用而用,我们的目的是解决问题,并在一定的场景下以水到渠成的方式处理。不过引入任何的设计模式,都会增加一定的学习难度,除非是自己本身领会比较好了,就会显得轻松一些。本... ...

[设计模式]创建型模式-简单工厂模式

博主头像 简介 简单工厂模式又称为静态工厂模式,属于创建型模式,但不属于GOF23设计模式。由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。 简单工厂适用场景:工厂类负责创建的对象比较少;客户端只需要知道传入工厂类的参数,对于如何创建对 ...

[设计模式]创建型模式-单例模式

博主头像 前言 单例模式是最简单的一种模式。在Go中,单例模式指的是全局只有一个实例,并且它负责创建自己的对象。单例模式有减少内存和系统资源开销、防止多个实例产生冲突等优点。 因为单例模式保证了实例的全局唯一性,并且只被初始化一次,所以比较适合全局共享一个实例,且只需要被初始化一次的场景,例如数据库实例、全局 ...

[设计模式]行为型模式-策略模式

博主头像 前言 策略模式定义了一系列算法,并将每个算法封装起来,使它们可以互相替换,且算法的变换不会影响使用算法的客户。 在项目开发中,我们经常要根据不同的场景,采取不同的措施,也就是不同的策略。假设我们需要对a、b这两个整数进行计算,根据条件的不同,需要执行不同的计算方式。我们可以把所有的操作都封装在同一个 ...

遍历用for还是foreach?

博主头像 在编程的世界里,我们经常需要对数据进行循环处理,常用的两种方法就是:for循环和foreach循环。想象你站在一条装满宝贝的传送带前,你要亲手检查每一件宝贝。使用for循环就像是你亲手控制传送带的速度和方向,而使用foreach循环则是传送带自动运转,你只需专注于宝贝本身。 ...

设计模式(二十三)访问者

博主头像 一、定义 表示一个作用于某对象结构中的各个元素的操作。访问者模式让你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式是一种对象行为型模式 二、描述 访问者模式是一种较为复杂的行为型模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可 ...

如何在不依赖于Mq的形式下更优雅地实现异步任务处理!!!

背景 考虑到现有业务很多依赖于MQ的方式进行,这种方式需要依赖于MQ,发送消息到mq和消费mq消息时需要了解mq消息结构进行相应处理; 对于后续对同样的事件做其他处理的人如不能提前了解到已有相应消息发到了mq就得再发一次消息到mq等。 图1.1 消息中间件 现需要考虑在不依赖于Mq的形式下如何更优雅 ...