推荐语 本篇文章深度剖析了观察者模式的核心原理及其在软件开发中的重要应用,通过清晰而深入的讲解,读者小伙伴可以深入理解观察者模式如何实现松耦合的事件通知机制,从而构建更灵活、可扩展的软件系统。本文既适合希望深入了解设计模式的专业人士,也适合希望提升代码质量和可维护性的开发者。无论您是新手还是资深开发者,我相信都能从本文中有一些获益匪浅的! 什么是观察者模式 观察者模式是一种对象行为模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,主题是通知的发布者,它发出通知时并不需要知道谁是它的观察者,可以有任意数目的观察者订阅...

什么是组合模式 组合模式(CompositePattern)是一种结构型设计模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的关系。组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理个别对象以及组合对象。 组合模式的核心原理 组合模式的核心原理是将对象组合成树形结构以表示“部分-整体”的层次结构,从而使得用户对单个对象和组合对象的使用具有一致性。 具体来说,组合模式的核心是定义包含自身对象的集合,从而形成树的结构,让每个节点都有同样的元素和操作。这种模式适用于所有需要有层次结构的场景,包括文件结构、树形菜单等。 组合模式由三个核心角...

什么是享元模式 享元模式是一种对象结构型模式,享元模式通过存储这些共享实例对象的地方称为享元池(FlyweightPool),可以避免频繁的创建销毁对象,大幅度减少需要创建的对象数量,避免大量相似类的开销,从而提高系统资源的利用率。一般和单例模式配合使用,将享元工厂声明为一个单例类来池化享元对象。享元模式要求能够共享的对象必须是细粒度对象,因此它又称为轻量级模式。 享元模式的核心角色 享元模式的主要核心角色有抽象享元角色(AbstractFlyWeight)、具体享元(ConcreteFlyWeight)角色、享元工厂(FlyWeightFactory)角色和客户端角色。 抽象享元角色...

什么是桥梁模式 桥梁模式(BridgePattern)也称为桥接模式,属于结构型模式,它主要目的是通过组合的方式建立两个类之间的联系,而不是继承。桥梁模式将抽象部分与它的具体实现部分分离,使它们都可以独立地变化。 桥梁模式的核心原理 桥梁模式的核心原理是将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化。 具体来说,桥梁模式通过组合或聚合关系来建立抽象和实现之间的关系,而不是使用继承关系。这样可以降低抽象和实现之间的耦合度,使得它们可以独立地变化。 桥梁模式的实现通常包括以下四个角色: Abstraction——抽象化角色:它的主要职...

前言 从这篇文章开始来盘一盘结构型设计模式,在开始之前先来简单回顾一下创建型的设计模式有哪些,如果有兴趣,就来一起学习吧: 设计模式之简单工厂模式 工厂方法模式:改变你对软件开发的认知_凡夫编程的技术博客_51CTO博客 抽象工厂模式:角色解析与应用探索_凡夫编程的技术博客_51CTO博客 设计模式之单例模式:不同实现方式的深度解析_凡夫编程的技术博客_51CTO博客 解密原型模式:工作原理与实际应用_凡夫编程的技术博客_51CTO博客 掌握建造者模式:构建复杂对象的灵活解决方案_凡夫编程的技术博客_51CTO博客 那么结构型的设计模式有哪些呢?结构型模式是用于处理类或对象的组合的设计模式...

什么是建造者模式 建造者模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。这种模式将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 举一个简单的例子:假设我们要创建一个复杂的对象,例如一辆汽车,它由多个部分组成,包括引擎、车身、轮胎等。如果我们使用传统的创建方式,我们需要在代码中定义一个汽车类,并在其中定义各个部分的方法和属性。但是,这种方式会使得代码变得非常复杂和难以维护。 而使用建造者模式,我们可以将汽车的创建过程分解为多个步骤,每个步骤由一个独立的建造者类负责。首先,我们可以定义一个汽车接口,它规范了汽车对象的各个组成部分的建造。然后,我们可以定义具体的建...

什么是单例模式 单例模式是一种常用的软件设计模式,其主要作用是保证某一个类只能有一个实例,并提供对该实例的全局访问点。单例模式有三个要点:1.某个类只能有一个实例。2.它必须自行创建这个实例。3.它必须自行向整个系统提供这个实例。 单例模式的分类 单例设计模式在具体实现上有,分为两类:1.​饿汉式:在类加载的时候就已经创建好实例,不存在多线程并发访问的问题。2.懒汉式:在类加载的时候不创建实例,当调用getInstance方法的时候才判断实例是否存在,如果不存在才创建实例,存在就返回已有的实例。此种方式需要考虑线程安全问题。 单例模式的实现 在具体实现上,饿汉式的单例有两种实现方法,懒汉式的...

前言 UML类图看和画其实很简单,看懂就更简单了:第一,简单了解一下UML类图是干什么用的;第二了解一UML类图的主要描述对象是什么;第三,UML类图描述的对象之间有哪些关系;最后,了解一下,这些关系怎么用图形化的符号来描述它。 什么是UML类图? 类是具有相似结构,属性和行为的一组对象的统一描述,UML类图就是用一系列如箭头,实线,虚线等图形符号来描述类之间关系的图形。行话说,一图胜千言,在实际业务设计开发过程中,清晰的UML类图可以快速让我们搞清楚类之间的关系,也方便于沟通交流。 类图的主要描述对象 通常情况下,类图描述的主体是对象是类和接口。类是具有相同属性和行为的对象的抽象,接口则抽象...

在实际的业务开发中,除了经常有针对对象的判断或操作以外,经常也会遇到的就是字符串的判断和操作。比如判断字符串是否为空、是否以某个字符结尾、去除头部和尾部的空白字符、字符的查找和替换。在Spring的核心包中存在这样一个类org.springframework.util.StringUtils,它提供了常见的关于字符串的判断和操作的静态方法。下面咱们针对一些常见的一块学习一下,顺便再把前面说的断言给复习一下: org.springframework.util.StringUtils 字符串判断 判断字符串是否为null,或""。注意,包含空白符的字符串为非空。 boolean isE...

前言 程序员如何提高代码能力?个人认为代码能力比较强的程序员应该具备良好的编码习惯并可以输出高质量的代码实现的特征。那么程序员如何提高代码能力的问题,就变成了怎么才能成为一个具备良好编码习惯并可以输出高质量代码实现的程序员。其实很简单,首先,要知道高质量的代码具备哪些特性,良好的编码习惯有哪些,然后就是如何在编码过程中满足这些特性,并通过有意识的训练养成好的编码习惯。 那么质量比较高的代码应该包含哪些特性?良好的编码习惯又有哪些?作为程序员又如何通过有意识的训练使自己能够达到这样的能力水平呢? 高质量的代码具备的特性 可维护性 所谓“维护”无外乎就是修改bug、修改老的代码、添加新的代码之类...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~