设计模式

软件设计模式系列之四——简单工厂模式

简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,用于对象的创建,它属于工厂模式的一种。简单工厂模式的主要目标是封装对象的创建过程,使客户端代码与具体类的实例化解耦,从而提高代码的可维护性和可扩展性。 ......
模式 设计模式 工厂 软件

软件设计模式系列之三———工厂方法模式

工厂方法模式是一种常见的设计模式,属于创建型设计模式之一,它在软件工程中用于对象的创建。该模式的主要思想是将对象的创建过程抽象化,将具体对象的实例化延迟到子类中完成,以便在不同情况下可以创建不同类型的对象,而客户端代码不需要知道实际创建的对象类型。 ......
模式 设计模式 工厂 方法 软件

【23种设计模式】装饰模式(九)

前言 装饰模式,英文名称:Decorator Pattern。我第一次看到这个名称想到的是另外一个词语“装修”,我就说说我对“装修”的理解吧,大家一定要看清楚,是“装修”,不是“装饰”。在房子装修的过程中,各种功能可以相互组合,来增加房子的功用。类似的,如果我们在软件系统中,要给某个类型或者对象增加 ......
模式 设计模式

为啥Spring Boot 提倡使用依赖注入(Dependency Injection)的设计模式

Spring Boot 提倡使用依赖注入(Dependency Injection)的设计模式,这种模式的主要目的是解耦和提高代码的可测试性、可维护性和可扩展性。以下是注入的一些优点: 1.解耦和模块化:通过使用依赖注入,你可以将不同的模块解耦,它们之间通过接口进行交互而不是直接依赖具体的实现类。这 ......

设计模式概述一

设计模式:核心在与提供了相关问题的解决方案,使得人们可以更加方变得服用成功地设计和体系结构 设计模式的本质是棉线对象设计原则的实际应用,是对累的封装性,继承性以及累的关联关系和组合关系的充分理解 设计模式的优点: 提高思维能力,编程能力和设计能力 设计更加标准化,提升软件开发的效率,缩短软件的开发周 ......
设计模式 模式

Spring 框架中用到了哪些设计模式

单例,spring的bean的scope默认就是单例 工厂,例如beanfactory,ApplicationContext创建对象 代理,aop使用了代理 模板,以xxxtemplate结尾的都是用到了模板模式,例如jdbc,redis,rabbit~ 剩下的 包装器设计模式 观察者模式 适配器模 ......
设计模式 中用 框架 模式 Spring

【23种设计模式】组合模式(七)

前言 组合模式,英文名称是:Composite Pattern。当我们谈到这个模式的时候,有一个物件和这个模式很像,也符合这个模式要表达的意思,那就是“俄罗斯套娃”。“俄罗斯套娃”就是大的瓷器娃娃里面装着一个小的瓷器娃娃,小的瓷器娃娃里面再装着更小的瓷器娃娃,直到最后一个不能再装更小的瓷器娃娃的那个 ......
模式 设计模式

设计模式-中介者模式

中介者模式 定义 + 用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显示地互相引用,从而使耦合松散,并且可以独立地改变他们的交互。 UML 类图 使用场景 + 一般用于一组对象以定义良好但复杂的方式进行通信的场景,比如窗体的 Form 或者 web 页面 asp + 想定制一个分布在多 ......
中介者 模式 设计模式 中介

设计模式-抽象模板模式

抽象类 父类方法不确定如何实现,则设为抽象方法和抽象类。 抽象类最佳实践——模板模式 将多个类公共的部分提取出来,放入抽象类。若设为抽象方法,则子类继承抽象类后需要重写该方法。涉及到多态的动态绑定 ......
模式 设计模式 模板

适配器设计模式解决接口冲突

title: 适配器设计模式解决接口冲突 index_img: https://tuchuangs.com/imgs/2023/08/04/f341f43b9362c8a1.png tags: - Java SE - 接口 categories: - Java SE hide: false exce ......
设计模式 适配器 接口 模式

设计模式-单例模式

保证在整个软件系统中,对某个类只能存在一个对象实例。 ### 饿汉式(类加载时创建,没用到也创建) 1、构造器私有化(防止new对象)。 2、类内部创建私有的静态对象。 3、用一个公共的getInstance()静态方法返回该对象。 如Runtime类 ### 懒汉式(使用才创建) 1、仍然使构造器 ......
模式 设计模式

软件设计模式系列之二———抽象工厂模式

抽象工厂模式是一种创建型设计模式,它提供了一种创建一组相关或相互依赖对象的方式,而无需指定它们的具体类。该模式以一组抽象接口为核心,包括抽象工厂接口和一组抽象产品接口,每个具体工厂类负责创建特定产品家族,保证这些产品之间的兼容性。客户端代码通过与抽象工厂和抽象产品接口交互,可以轻松地切换不同工厂来创... ......
模式 设计模式 工厂 软件

设计模式(五)原型

##一、定义 **使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。原型模式是一种创建型模式。** ##二、描述 **包含以下三个角色:** ![](https://img2023.cnblogs.com/blog/1780813/202305/1780813-202305271 ......
设计模式 原型 模式

行为型设计模式-访问器 Visitor

### 简介 在不改变原有类的前提下,可以新增不同的访问器,每种访问器都可自定义访问策略。 如超市购物车里什么物品都有,顾客遍历访问商品主要查看商品是否过期,包装是否完整,收银员遍历商品主要查看价格。顾客和收银员可以理解为两种Visitor,各自关注的重点就是Visitor中的visit方法实现逻辑 ......
设计模式 行为 Visitor 模式

行为型设计模式-状态 State

### 简介 跟状态机密切相关。有限状态机 FSM 包含 状态、事件、动作三个元素。 当发生一个事件时,引发老状态变成新状态,并执行一个动作。 状态和行为间一般是有限制的,如某些行为只能再某些状态下进行,某些状态只能触发某些行为。 简单的状态间转换可使用 if else。 更有条理的可以用查表法:二 ......
设计模式 状态 行为 模式 State

行为型设计模式-策略 Strategy

### 简介 一组实现了同一个策略接口的策略,可以随时指定用哪一种策略完成业务。 策略模式其实跟桥接模式很像,都是通过持有另一个对象,达到组合的效果。 ### 角色 - Context 上下文 可设置使用的 Strategy - 抽象 Strategy - 具体 Strategy ### 类图 如图 ......
设计模式 Strategy 策略 行为 模式

行为型设计模式-模板方法 Template Method

### 简介 父类抽象类定义大的处理流程,部分细节做成抽象方法,留给子类去实现。 如Java的JUnit中, setUp tearDown方法都是留给具体的测试用例来写,Servlet中service处理了一个请求的大部分工作,留下doGet和doPost给业务自定义处理。 另外callback一般 ......
设计模式 Template 模板 行为 模式

行为型设计模式-备忘录 Memento

### 简介 允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态,该状态保存在对象之外,这样就可以不破坏原有对象的封装性了。 ### 角色 - Originator 原发器 即需要被保存状态的类 - 抽象 Memento 备忘录类 定义备忘录基本接口 可以看做成是快照 Snapshot - 具 ......
设计模式 备忘录 行为 Memento 模式

工厂设计模式

### 工厂设计模式 #### 简单(静态)工厂模式 ##### 基本介绍 - 1.简答工厂模式,属于创建型模式,是工厂模式的一种。简单工厂模式是由一个工厂对象决定创建哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单,最实用的模式。 - 2.简单工厂模式:定义了一个创建对象的类,由这个类来封装 ......
设计模式 工厂 模式

行为型设计模式-观察者(发布订阅) Observer

### 简介 也叫做发布/订阅模式,多个观察者可订阅一个主题对象,当主题状态发生变化时会通知所有已订阅的观察者,观察者可自由处理。 ### 角色 - Subject/Publisher 主题/发布者 维护已订阅的观察者 通知已订阅的观察者 - 抽象Subscribe 订阅者 定义订阅者接口 - 具体 ......

行为型设计模式-中介者 Mediator

### 简介 通过引入一个中介者,将对象之间两两交互的情景,改为每个对象都是与中介者交互,即将网状关系改成了星状关系。缺点是中介者逻辑会很臃肿。 当系统中出现多对多的情况时,应该先考虑设计是否合理,而尽量不要直接使用中介者。 ### 角色 - 抽象Mediator中介者 - 具体Mediator中介 ......

行为型设计模式-迭代器 Iterator

### 简介 提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。 ### 角色 - Iterator抽象迭代器 - Collection抽象集合 - ConcreteIterator具体迭代器 - ConcreteCollection具体集合 ### 类图 如图,Iter ......
设计模式 Iterator 行为 模式

行为型设计模式-命令 Command

### 简介 client 发出的请求,都被封装成 Command 对象,每个 Command 对象代表一种操作,Command 具体操作的是 Receiver 对象内的方法。实现动作与目标隔离和复用的目的。 ### 角色 - 抽象 Command - Receiver 真正干活的 - 具体 Com ......
设计模式 命令 行为 Command 模式

行为型设计模式-责任链 Chain Of Responsibility

### 简介 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 ### 角色 - Handler 接口 定义处理方法签名,设置nextHandler方法 - Concrete Handler 具体类 实现 ......

结构型设计模式-代理 Proxy

### 简介 代理与装饰器很像,都是在原有类基础上,增量做改动。 不同在于,代理模式下,client 直接操作的就是 proxy 对象,new 的就是 proxy 对象,不可以让client 直接操作被代理对象,相当于原始类被完全隐藏掉了。 **类比现实生活,租房代理是不会让客户直接跟房东联系的,客 ......
结构型 设计模式 结构 模式 Proxy

设计模式-建造者模式

建造者模式是一种**创建型**的设计模式, 将一个对象的创建过程拆分成一个个小的部分, 每次决定其中的一个细节, 构建出一个复杂对象 对象的创建过程被拉长分散, 可能会经历一系列的复杂决策, 最终才会形成我们需要的对象 对象拥有多个参数, 或者拥有包含多个参数的构造函数, 通过建造者模式可以相对自由 ......
模式 设计模式

结构型设计模式-享元(缓存)Flyweight

### 简介 享元模式更常见的叫法是缓存或 cache,一个对象只创建一次,之后一直复用这一对象。 跟单例不同在于,单例是全局只有唯一一个对象,所有人一起用同一个对象,且该对象是提前预设好的,不能定制。 而享元则可以根据参数不同创建出不同的实例,不过实例一旦创建就只保留一份,之后再次创建相同参数的实 ......

结构型设计模式-外观 Facade

### 简介 外观模式特点是屏蔽后端复杂的实现逻辑,将其整合成简单的一个或几个接口提供出去,client 只需与 Facade 层提供的简单接口交互即可。 例如银行办业务,后面涉及到很多财务细节,但用户面对的就是一个窗口业务员。 ### 角色 - Facade 外观层 - Subsystem 负责具 ......
结构型 设计模式 外观 结构 模式

结构型设计模式-组合(对象树) Composite

### 简介 组合模式又叫对象树,将对象按照树形结构串起来,呈现出局部和整体相同的特性。 树中每个节点都由两部分组成,首先节点有自己的业务数据,其次节点内可以含有子节点集合。 比如盒子中可以放物品,也可以放其他小盒子,小盒子里又可以放物品和其他更小的盒子。 当计算盒子的物品价格时,只需要将盒子里本身 ......

结构型设计模式-桥接(模块化) Bridge

### 简介 桥接模式可将一系列紧密相关的、水平等级的类,转变为组合关系,形成垂直等级关系。 如抽象类 Color、Shape,分别有 RedColor、BlueColor、CircleShape、SquareShape 的实现类,那么想创建红色方形,则可以将 Shape 类中持有 Color 引用 ......
结构型 设计模式 模块 结构 模式