内功心法专题-设计模式-20、中介者模式
1. 模式定义⭐️🔴又叫调停模式,定义一个中介者角色来封装一系列对象之间的交互,让各个对象不需要显式地相互引用,将原有对象之间的耦合松散,且可以独立地改变它们之间的交互。❕%%1737-🏡⭐️◼️用一个中介对象来封装不同对象之间的交互,使得各个不同对象无需显示的调用,耦合度降低,同时可以更加方便的维护他们之间的交互逻辑◼️⭐️-point-202301251737%% 2. 模式结构2.1. 模式角色 抽象中介者(Mediator)角色:它是中介者的接口,提供了同事对象注册与转发同事对象信息的抽象方法。 具体中介者(ConcreteMediator)角色:实现中介者接口,聚合抽象同事类,定义一个 集合(List或者HashMap) 来管理同事对象,并接受某个同事对象消息,协调各个同事角色之间的交互关系,因此它依赖于同事角色。 抽象同事类(Colleague)角色:定义同事类的接口,保存中介者对象,提供同事对象交互的抽象方法,实现所有相互影响的同事类的公共功能。聚合抽象中介者,并构造导入,以便具体同事类能调用具体中介者类中的方法。 具体同事类(Concrete Colleague) ...
内功心法专题-设计模式-21、迭代器模式
1. 模式定义 1)迭代器模式(lterator Pattern)是常用的设计模式,属于行为型模式 2)如果我们的集合元素是用不同方式实现的,有数组、集合或者其他方式。当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决 3)迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构 2. 模式结构2.1. 模式角色 抽象聚合(Aggregate)角色:定义存储、添加、删除聚合元素以及创建迭代器对象的接口。将客户端和具体的聚合解耦 具体聚合(ConcreteAggregate)角色:实现抽象聚合类,返回一个具体迭代器的实例 抽象迭代器(Iterator)角色:定义访问和遍历聚合元素的接口,通常包含 hasNext()、next() 等方法。 具体迭代器(Concretelterator)角色:实现抽象迭代器接口中所定义的方法,完成对聚合对象的遍历,记录遍历的当前位置。 2.2. UML 2.3. 实现逻辑 在具体聚合类中,具体聚合类提供返回具体迭代器类的方法,在 ...
内功心法专题-设计模式-22、访问者模式
1. 模式定义 1)访问者模式(Visitor Pattern),封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作 2)主要将数据结构与数据操作分离,解决数据结构和操作耦合性问题 3)访问者模式的基本工作原理是:在被访问的类里面加一个对外提供接待访问者的接口 ❕%%0631-🏡⭐️◼️访问者模式的概念和实现方法🔜📝 封装一些作用于数据元素的操作,还可以在不改变数据结构的前提下定义与数据元素的其他操作;主要意义在于将数据和操作分离;实现方法是在数据结构上增加一个对外访问的接口◼️⭐️-point-202301300631%% 2. 模式结构2.1. UML 2.2. 模式角色 Visitor(抽象访问者):为该对象结构中每个ConcreteElement类声明一个visit操作,它的参数就是可以访问的元素,它的方法个数理论上来讲与元素类个数(Element的实现类个数)是一样的,从这点不难看出,访问者模式要求元素类的个数不能改变。 ConcreteVisitor(具体访问者):实现Visitor中声明的操作,即给出对每一个元素 ...
内功心法专题-设计模式-23、备忘录模式
1. 模式定义备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,很多软件都提供了撤销(Undo)操作,如 Word、记事本、Photoshop、IDEA等软件在编辑时按 Ctrl+Z 组合键时能撤销当前操作,使文档恢复到之前的状态;还有在 浏览器 中的后退键、数据库事务管理中的回滚操作、玩游戏时的中间结果存档功能、数据库与操作系统的备份操作、棋类游戏中的悔棋功能等都属于这类。 定义: 又叫==快照模式==,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。 2. 模式结构2.1. 模式角色 发起人(Originator)角色:记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘录里的所有信息。 备忘录(Memento)角色:负责存储发起人的内部状态,在需要的时候提供这些内部状态给发起人。 管理者(Caretaker)角色:对备 ...
内功心法专题-设计模式-24、解释器模式
1. 模式定义⭐️🔴解释器模式(Interpreter Pattern):是指给定一个语言(表达式),定义它的文法的一种表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。 第一步:我们需要将待解决的问题,提取出规则,抽象为一种“语言”。即文法(语法)规则。比如加减法运算,规则为:由数值和+-符号组成的合法序列,“1+3-2” 就是这种语言的句子。第二步:解析出像“1+3-2” 这样语句的含义,即通过一定的表现形式来表达语句的含义,比如抽象语法树(AbstractSyntaxTree,AST),或简称语法树(Syntax tree)就是一种抽象表示,是用树形来表示符合文法规则的句子。❕%%0717-🏡⭐️◼️解释器模式的概念是什么🔜📝 将我们待解决的问题,比如已经变成了一段表达式,我们再抽象成文法表示,然后给出一个解释器,通过一定的变现形式,比如抽象语法树,来表示出该类表达式所表示的含义◼️⭐️-point-202301300717%% 2. 模式结构2.1. 模式角色 Context环境角色:含有解释器之外的全局信息 AbstractExpression抽象表达 ...
内功心法专题-设计模式-16、命令模式
1. 模式定义命令模式(Command Pattern):==将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开==。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行存储、传递、调用、增加与管理。❕%%2218-🏡⭐️◼️命令模式的定义?将一个请求封装为对象,调用者和执行者通过命令对象进行沟通,使得发出请求的责任和执行请求的责任分离◼️⭐️-point-202301222218%% 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可。此时可以使用命令模式来进行设计 2. 模式结构2.1. ⭐️🔴UML 图示 2.2. ⭐️🔴角色分析 抽象命令类(Command)角色: 定义命令的接口,声明执行的方法,可以是接口或抽象类。 具体命令(Concrete Command)角色:具体的命令,实现命令接口;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。 实现者/接收者(Receiver)角色: 接收者,真正 ...
内功心法专题-设计模式-12、组合模式
1. 模式定义又名部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式==依据树形结构==来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。❕%%0804-🏡⭐️◼️组合模式与树形结构如何关联记忆?组合模式又叫部分整体模式,是将一组相似的对象看成是一个对象处理,通过树形结构来表示整体与部分的层次关系的。属于结构型设计模式◼️⭐️-point-202301230804%% 2. 模式结构2.1. 模式角色组合模式主要包含三种角色: 抽象根节点(Component):定义系统各层次对象的共有方法和属性,可以预先定义一些默认行为和属性。 树枝节点(Composite):定义树枝节点的行为,存储子节点,组合树枝节点和叶子节点形成一个树形结构。 叶子节点(Leaf):叶子节点对象,其下再无分支,是系统层次遍历的最小单位。 2.2. ⭐️🔴UML图示❕%%0817-🏡⭐️◼️2个UML对象之间2种关系的模式:装饰者模式、组合模式,都是聚合+继承◼️⭐️-point-20230123081 ...
内功心法专题-设计模式-13、享元模式
1. 模式定义⭐️🔴 1)享元模式(Flyweight Pattern)也叫 蝇量模式:运用共享技术有效地支持大量细粒度的对象 2)常用于系统底层开发,==解决系统的性能问题==。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个 3)享元模式能够==解决重复对象的内存浪费的问题==。当系统中有大量相似对象,需要缓冲池时,不需总是创建新对象,可以从缓冲池里拿。这样可以降低系统内存,同时提高效率 4)享元模式经典的应用场景就是池技术了,String 常量池、数据库连接池、缓冲池等等都是享元模式的应用,享元模式是池技术的重要实现方式 2. 模式结构2.1. 两种状态享元(Flyweight )模式中存在以下两种状态: 内部状态,存储在享元对象内部且不会随着环境的改变而改变的可共享部分。 外部状态,指随环境改变而改变的不可以共享的部分。享元模式的实现要领就是区分应用中的这两种状态,并将外部状态外部化。 比如围棋、五子棋、跳棋 ...
内功心法专题-设计模式-14、模板方法模式
1. 行为型模式行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: 模板方法模式 (TemplateMethod) 策略模式 (Strategy) 命令模式 (Command) 职责链模式 (ChainOfResponsibility) 状态模式 (State) 观察者模式 (Observer) 中介者模式 (Mediator) 迭代器模式 (Iterator) 访问者模式 (Visitor) 备忘录模式 (Memento) 解释器模式 (Interpreter)❕%%2129-🏡⭐️◼️行为型设计模式有哪些◼️⭐️-point-202301222129%%以上 11 种行为型模式,除了模板方法模式和解释器模式是类行为型模式,其他的全部属于对象行 ...
内功心法专题-设计模式-15、策略模式
1. 是什么⭐️🔴 1)策略模式(Strategy Pattern)中,定义算法族,分别封装起来,让他们之间==可以互相替换==。此模式让算法的变化==独立于使用算法的客户==,并委派给不同的对象对这些算法进行管理。 2)这算法体现了几个设计原则 第一、把变化的代码从不变的代码中分离出来 第二、针对接口编程而不是具体类(定义了策略接口) 第三、多用组合/聚合,少用继承(客户通过组合方式使用策略 2. 模式结构策略模式的主要角色如下: 抽象策略(Strategy)类:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。 具体策略(Concrete Strategy)类:实现了抽象策略定义的接口,提供具体的算法实现或行为。 环境(Context)类:持有一个策略类的引用,最终给客户端调用。 3. UML 图示3.1. 原理图 说明:从上图可以看到,客户 Context 有成员变量 Strategy 或者其他的策略接口。至于需要使用到哪个策略,可以在构造器 ...

