刷新
学了设计模式,却不知道怎么选择?

博主头像 本人主要讲述设计模式怎么去选择,这仅仅是不知从何下手提供一个抓手的东西,并不是银弹。常想、多用,积累经验后,方可灵活运用,做到无模式胜有模式,才可能会在复杂场景中,设计出高质量的系统。 设计模式的选择是一个从问题到解决方案的递进过程。通过明确问题类型、分析目标特性、遵循设计原则以及结合场景需求,可以 ...

[设计模式]行为型-备忘录模式

博主头像 简介 备忘录模式(Memento Pattern)是一种行为型设计模式,它允许生成对象状态的快照并在以后将其还原。备忘录模式不会影响它所处理对象的内部结构,也不会影响快照中存储的数据。简单来说,它就像游戏中的“保存”和“加载”功能。 组成角色: Originator(发起人): 主要用于生成自身状态 ...

设计模式脉络

软件的可扩展性 软件善变,可扩展性成为评价软件生命力的重要指标。 所谓的可扩展性是指软件为了应对将来的业务变化,而提供的扩展能力。当有新的业务发生时,可扩展性较好的软件仅需小范围修改就能提供支持,它们可以保持总体上的稳定。 传统的结构化软件设计方法在这方面力有不及,面向对象方法却有一些天然的优势。 ...

掌握设计模式--解释器模式

博主头像 解释器模式(Interpreter Pattern) 解释器模式(Interpreter Pattern)是一种行为型设计模式,用于定义一种语言的文法表示,并提供一个解释器来解释该语言中的句子。这种模式通常用于开发需要解析、解释和执行特定语言或表达式的应用程序。 主要目的是为特定类型的问题定义一种语 ...

掌握设计模式--状态模式

博主头像 状态模式(State Pattern) 状态模式(State Pattern)是一种行为设计模式,它允许对象在其内部状态改变时改变其行为,看起来像是改变了其类。这种模式通常用于解决对象在运行时状态多变且行为复杂的问题。 核心思想:将状态与行为绑定,每种状态对应一个具体类有独立的行为逻辑,状态的切换只 ...

[设计模式]行为型-命令模式

博主头像 简介 命令模式(Command Pattern)是一种行为型设计模式,它将请求或操作封装为独立的对象,允许用户参数化客户端、队列请求、记录日志,并支持撤销操作。该模式的核心思想是将“请求的发起者”与“请求的执行者”解耦,使两者通过命令对象进行交互。 角色组成: 调用者(Invoker),负责发起请求 ...

掌握设计模式--中介者模式

博主头像 中介者模式(Mediator Pattern) 中介者模式(Mediator Pattern)是一种行为型设计模式,它通过引入一个中介者对象,来减少多个对象之间的直接依赖,使对象之间的通信变得松耦合。对象不直接相互引用,而是通过中介者与其他对象交互。这有助于提高系统的可维护性和扩展性。 核心思想: ...

用一种新的分类方法梳理设计模式的脉络

设计模式是程序员们长期实践经验的总结,被认为是面向对象方法的“刀刃”部分。 1990年代出版的《Design Patterns》收录了23种设计模式,总结了一些有益的设计原则,为这份实践经验的理论化做出了开创性贡献。 我们经常引用《Design Patterns》中的观点将这些设计模式分成创建型、结 ...

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

博主头像 备忘录模式(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进行开发,也可以使用其他的一些开发工具。 定义:该模式定义了一系列算 ...

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

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

123···5>