刷新
掌握设计模式--备忘录模式

博主头像 备忘录模式(Memento Pattern) 备忘录模式(Memento Pattern)是一种行为型设计模式,用于在不暴露对象内部实现细节的情况下,捕获对象的内部状态,并在需要时恢复到先前的状态。该模式通常用于需要撤销和恢复操作的场景。 核心思想:在不破坏对象封装的前提下,捕获并保存对象的内部状态 ...

掌握设计模式--命令模式

博主头像 命令模式(Command Pattern) 命令模式(Command Pattern)是一种行为型设计模式,它将请求(命令)封装成对象,从而使您能够参数化客户端(调用者)使用不同的请求、队列请求或者日志请求,甚至支持可撤销的操作。 核心思想是 将请求封装成对象,从而使得调用者与接收者解耦,同时支持请 ...

从配置读取到懒加载模式:从具体问题到抽象设计语素的提炼

博主头像 在实际项目中,我们常常需要高效、线程安全地加载配置文件。为了确保在高并发场景下配置只加载一次、且读取速度尽可能快,我们往往会设计一些特殊的加载方案。今天,我将记录一次从具体实现问题出发,逐步抽象出高级设计概念的过程。 1. 高效加载配置的需求 在项目初期,我们的需求很简单:如何在多线程环境下高效加载 ...

掌握设计模式--访问者模式

博主头像 访问者模式(Visitor Pattern) 访问者模式(Visitor Pattern)是一种行为设计模式,它允许你将操作(方法)封装到另一个类中,使得你可以在不修改现有类的情况下,向其添加新的操作。 核心思想是将数据结构和对数据的操作分离,通过访问者对象来对数据进行操作,而不是将操作方法直接嵌入 ...

访问者模式

博主头像 访问者模式主要用于分离算法和对象结构,从而在不修改原有对象的情况下扩展新的操作。它适用于数据结构相对稳定,而操作(行为)容易变化的场景。 ...

[设计模式]行为型-责任链模式

博主头像 简介 责任链模式(Chain of Responsibility Pattern)允许开发者将请求沿着链进行发送,直到其中一个处理者对象对其进行处理。 责任链模式的角色说明: 处理者(Handler):声明所有具体处理类的通用接口。该接口通常仅包含一个方法,用于处理请求,但有时还会包含一个用于设置下 ...

依赖倒置 DIP、依赖注入 DI、控制反转 IoC 和工厂模式

博主头像 1. 依赖倒置 依赖倒置原则(Dependency Inversion Principle, DIP)是 SOLID 原则中的一项,其核心思想是通过抽象解耦高层模块和低层模块,使二者都依赖于抽象而非具体实现。 依赖反转/倒置的体现:传统依赖方向是高层模块直接调用低层模块,在源码级别上高层模块依赖低层 ...

模板方法模式

博主头像 模板方法模式定义了一个操作中的算法骨架,并将一些步骤延迟到子类中实现。模板方法模式基于继承机制。模板方法模式在类层次上运作,因此它是静态的。 ...

创建型模式

创建型模式 特点 创建型模式关注点是如何创建对象,其核心思想是要把对象的创建和使用相分离,这样使得两者能相对独立地变换。 创建型模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。 简单/静态工厂SImple Factory 定义 在简单工 ...

【设计模式】遍历集合的艺术:深入探索迭代器模式的无限可能

博主头像 概述 定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 结构 迭代器模式主要包含以下角色: 抽象聚合(Aggregate)角色:定义存储、添加、删除聚合元素以及创建迭代器对象的接口。 具体聚合(ConcreteAggregate)角色:实现抽象聚合类,返回一个具体迭代 ...

【设计模式】告别冗长if-else语句:使用策略模式优化代码结构

博主头像 概述 先看下面的图片,我们去旅游选择出行模式有很多种,可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机。 作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有很多,可以选择Idea进行开发,也可以使用eclipse进行开发,也可以使用其他的一些开发工具。 定义:该模式定义了一系列算 ...

【设计模式】利用组合模式带你走进树形结构的世界

博主头像 概述 对于这个图片肯定会非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构。在树形结构中可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。可以将这颗树理解成一个大的容器,容器里面包含很多的成员对象,这些成员对象可以容器对象也可以是叶子 ...

【设计模式】如何使用适配器模式让不兼容的类协同工作?

博主头像 概述 如果去欧洲国家旅游的话,他们的插座如下图最左边,是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑,手机在当地不能直接充电。所以就需要一个插座转换器,转换器第1面插入当地的插座,第2面供我们充电,这样使得我们的插头在当地能使用。生活中这样的例子很多,手机充电器(将220v转换为5 ...

策略模式

博主头像 策略模式通过将算法封装在独立的策略类中,并在运行时动态选择算法,提供了一种灵活、可扩展的解决方案,能够有效地消除冗长的条件语句,提高系统的可维护性和扩展性。 ...

状态模式

博主头像 状态(State)模式属于行为型模式的一种。 状态模式允许对象在其内部状态改变时改变其行为,使其看上去就像改变了自身所属的类一样。 状态模式是为了把一大串if...else...的逻辑给分拆到不同的状态类中,使得将来增加状态比较容易。 状态模式的关键设计思想在于状态切换。简单的状态转换可以直接由调用 ...

观察者模式

博主头像 观察者模式是一种一对多的通知机制,让发送通知的一方(被观察者)和接收通知的一方(观察者)能彼此分离,互不影响。 ...

备忘录模式

博主头像 备忘录模式的核心思想是将对象的状态保存在一个独立的对象中,这样既能保持对象的封装性,又能方便地恢复对象到之前的状态。 ...

中介者模式

博主头像 中介者模式的目的是把多方会谈变成双方会谈,从而实现多方的松耦合。用一个中介对象来封装一系列的对象交互。这样,系统中的各个对象不直接互相引用,而是通过中介者进行交互,从而降低了系统的耦合度。 ...

关于设计模式的一点想法

最早读这本《设计模式:可复用面向对象软件的基础》是在大学的时候。读了一些片段,看到了讲文本编辑器的滚动条装饰,觉得有点意思,可以用来做图形界面。 记得有一天晚上上床睡觉后,和两位同寝室室友聊天。一位室友LL说,他为了找工作,把设计模式这本书看了五六遍,把所有设计模式都记住了。另一位室友LHT说,这设 ...

「全网最细 + 实战源码案例」设计模式——享元模式

博主头像 ​ 核心思想 享元模式(Flyweight Pattern)是一种结构型设计模式,主要用于减少程序中大量对象的内存消耗。该模式通过共享相同的数据来有效减少内存的使用,适用于对象非常多且可以共享一部分状态的场景。 核心:将对象的内部状态和外部状态分离: 内部状态:存储在享元对象内部的、不会改变的状态, ...