![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 54
设计模式学习
迈克丝
加油学技术,早日赚高薪
展开
-
21.解释器模式
定义 解释器模式(Interpreter Pattern)是一种按照规定语法进行解析的方案,在现在的项目中使用很少 定义:给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子 AbstractExpression抽象解释器 TerminalExpression终结符表达式:通常一个解释器模式中只有一个终结符表达式 NonterminalExpression非终结符表达式:文法中的每条规则对应一个非终结符表达式,非终结符表达式根据逻辑的复杂程度而增加,原则上每个文法规则原创 2021-05-06 18:29:58 · 60 阅读 · 0 评论 -
20.状态模式
定义 定义:当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类 状态模式的核心是封装,状态的变更引起了行为的变更,从外部看起来就好像这个对象对应的类发生了改变一样 State抽象状态类:接口或抽象类,负责对象状态定义,并且封装环境角色以实现状态切换 ConcreteState具体状态类:两个职责:本状态的行为管理以及趋向状态处理(就是本状态要做的事,以及本状态如何过度到其他状态) Context环境类:负责状态的切换 通用源码 //抽象状态类 public abstract class St原创 2021-04-29 17:57:26 · 65 阅读 · 0 评论 -
19.访问者模式
定义 访问者模式(Visitor Pattern) 定义:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作 Visitor抽象访问类:抽象类或接口,声明访问者可以访问那些元素 ConcreteVisitor具体访问类:影响访问到一个类该做什么 Element抽象元素:接口或抽象类,声明接受哪一类访问者访问 ConcreteElement具体元素:实现accept方法,通常是visitor.visit(this) ObjectStruture结构对象:元素原创 2021-04-28 18:12:54 · 54 阅读 · 0 评论 -
18.备忘录模式
定义 备忘录模式(Memento Pattern)——“后悔药” 定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存;这样以后就可将该对象回复到原先保存的状态 备忘录模式就是一个对象的备份模式 Originator发起人类:记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据 Memento备忘录类:负责存储Originator发起人的内部状态,在需要时提供该状态 Caretaker备忘录管理员类:对备忘录进行管理,保存和提供备忘录 通用源码 //发起人类原创 2021-04-23 18:29:17 · 60 阅读 · 0 评论 -
17.门面模式
定义 门面模式(Facade Pattern),也叫做外观模式,是一种较为常用的封装模式 定义:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行;门面模式提供一个高层次的接口,使得子系统更易于使用 门面模式注重“统一的对象”,也就是提供一个访问子系统的接口,除了这个接口外不能有任何访问子系统的行为发生 Facade门面类:客户端可以调用这个角色的方法;该角色没有实际的业务逻辑 subsystem子系统类:可以同时有一个或多个子系统,对于子系统来说,门面仅仅是另外的客户端 通用源码 //子系统 p原创 2021-04-21 18:51:17 · 63 阅读 · 0 评论 -
16.观察者模式
定义 观察者模式(Observer Pattern)也叫做发布订阅模式(Publish/subscrible) 定义:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态时,则所有依赖于他的对象都会得到通知并被自动更新 Subject被观察者:定义被观察者必须实现的职责,必须能够动态的增加/取消观察者 Observer观察者:观察者接收到消息后,即进行update操作,对接收到的信息进行处理 ConcreteSubject具体被观察者:定义被观察者的业务逻辑 ConcreteObserver具体观察者:原创 2021-04-19 18:36:58 · 82 阅读 · 0 评论 -
15.组合模式
定义 组合模式(Composite Pattern),也叫做合成模式或是部分-整体模式 主要用于描述部分与整体的关系 定义:将对象组合成树形结构以表示"部分-整体"的层次结构,使得用户对单个对象和组合对象的使用具有一致性 Companent抽象类:定义参加组合对象的公有方法和属性,可以定义一些默认的行为和属性 Leaf叶子类:叶子对象其下没有其他的分支,也是最下的遍历单位 Composite树枝类:树枝对象,它用于组合树枝和叶子形成一个树形结构 通用源码 //抽象类 public abstract clas原创 2021-04-13 18:29:54 · 72 阅读 · 0 评论 -
14.迭代器模式
定义 迭代器模式(Iterator Pattern) 该模式现在已经基本没人会去单独写一个迭代器,除非是开发产品 定义:它提供一种方法访问一个容器对象中的各个元素,而又不需要暴露该对象的内部细节 迭代器是为容器服务的,容器就是指能容纳对象的所有类型都可以称之为容器 如:Collection集合类型,Set类型等 迭代器就是为了解决遍历这些容器中的元素而诞生的 Iterator抽象迭代器类:抽象迭代器负责定义访问和遍历元素的接口,基本上有固定的3个方法——first()获得第一个元素;next()获得下一个元原创 2021-04-10 17:59:40 · 66 阅读 · 0 评论 -
13.适配器模式
定义 适配器模式(Adapter Pattern) 定义:将一个类的接口变换成客户端所期待的另一种接口,从而使得原本因接口不匹配而无法在一起工作的两个类能够在一起工作 适配器模式也叫做变压器模式,或是包装模式 例如:电源适配器,可以将110-220V之间的电源去给你的电脑充电,同时你的电脑还能正常使用 适配器模式就是把一个接口或类转换成其他的接口或类 Target目标类:这个类定义把其他类转换为什么接口(期望接口) Adaptee源类:这个类就是就是要被转换的类,它是已经存在且运行良好的类或对象 Adapt原创 2021-04-09 18:31:40 · 86 阅读 · 0 评论 -
12.策略模式
定义 策略模式(Strategy Pattern),也叫做政策模式(Policy Pattern) 定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换 策略模式主要使用的就是面向对象中的继承和多态机制 Context封装类:也叫做上下文类,起到承上启下的封装作用,不让高层模块对算法直接访问,封装变化 Strategy抽象策略类:策略/算法的抽象,通常是一个接口,定义每个策略或算法必须具有的方法 ...原创 2021-04-02 15:27:27 · 75 阅读 · 0 评论 -
11.装饰模式
定义 装饰模式(Decorator Pattern) 定义:动态的给一个对象添加一些额外的职责,就增加功能而言,装饰模式相比生成子类更加灵活 Component抽象类:Component是一个接口或是抽象类,用于定义我们最核心的对象 注意:在装饰模式中,必须有一个最基本,最核心,最原始的接口或抽象类充当Component抽象类 ConcreteComponent具体类:是上边Component的实现类,我们所需要装饰的就是它 Decorator装饰类:一般实一个 ...原创 2021-03-29 17:21:41 · 262 阅读 · 0 评论 -
10.责任链模式
定义原创 2021-03-25 19:05:19 · 121 阅读 · 0 评论 -
9.命令模式
定义 命令模式是一种高内聚的模式 定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能 Receive接受类:就是负责干活的类,命令传递到这里是应该被执行的 Command命令类:需要执行的命令都在这里声明 Invoker调用类:接收到命令,并且执行 命令模式比较简单,但是在项目中使用的很频繁,因为其封装性很好,并将请求方和执行方所分离,扩展性也得到了保证 通用源码 //Receiver类 public abstract class原创 2021-03-24 10:11:36 · 63 阅读 · 0 评论 -
8.中介者模式
定义 在多个对象依赖的情况下,通过加入中介者角色,取消了多个对象的关联或依赖关系,减少了对象的耦合性 定义:用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示的相互作用,从而十七解耦,并且可以独立的改变它们之间的交互 中介者模式一般由以下几部分组成: Mediator抽象中介者角色:抽象中介者角色定义统一的接口,用于各同事角色之间的通信 Concrete Mediator具体中介者角色:具体中介者角色通过协调各同事角色实现协作行为,所以其依赖于同事角色 Colleague同事角色:每一个同事角色原创 2021-03-15 23:24:40 · 58 阅读 · 0 评论 -
7.原型模式
定义 原型模式(Prototype Pattern)的简单程度仅次于单例模式;但正是因为其简单所以使用的场景很多 可以将不通过new关键字来产生一个对象,而是通过对象复制来实现的模式就叫做原型模式 定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 原型模式的核心是一个clone方法,通过该方法进行对象的拷贝,java提供了一个Cloneable接口来标识这个对象是可拷贝的 通用源码 public class PrototypeClass implements Cloneable{ //原创 2021-03-14 15:44:02 · 55 阅读 · 0 评论 -
6.代理模式
定义 代理模式(Proxy Pattern)是一个使用率非常高的模式 定义:为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫做委托模式,是很基础的,很多其他的模式,如状态模式,策略模式等本质上就是在更特殊的场合使用了代理模式 而在日常使用中,代理模式可以提供非常好的访问控制 一般包含三个角色: Subject抽象主题类:可以是抽象类也可以是接口,是一个最普通的业务类型定义,无特殊要求 RealSubject具体主题类:也叫做被委托角色,被代理角色,是业务逻辑的具体执行者 Proxy代理主题类:也原创 2021-03-02 19:02:35 · 79 阅读 · 0 评论 -
5.建造者模式
定义 建造者模式(Builder Pattern)也叫作生成器模式 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 在建造者模式中,有如下4哥角色: Product产品类:通常是实现了模板方法模式,也就是拥有模板方法和基本方法 Builder抽象建造类:规范产品的组建,一般由子类进行实现 ConcreteBuilder具体建造类:实现抽象类定义的方法,并且返回一个组建好的对象 Director导演类:负责安排所有模块的顺序,然后让Builder开始建造 通用源码如下所示原创 2021-03-01 11:47:18 · 49 阅读 · 0 评论 -
4.模板方法模式
定义 模板方法模式(Template Method Pattern):定义一个操作中的算法的框架,而将一些步骤延迟到子类中;使得子类可以不改变一个算法的结构即可重新定义该算法的某些特殊步骤 模板方法模式比较简单,主要就是使用了java的继承机制,其中的AbstractClass就是抽象模板类 在抽象模板类中,方法分为两类: 基本方法:也称之为基本操作,是要由子类实现的方法,并且在模板方法中被调用 模板方法:可以有一个或是多个,一般是一个具体的方法,实现对基本方法的调用,完成所需要的逻辑 注意:一般为了防止原创 2021-02-17 12:49:31 · 62 阅读 · 0 评论 -
3.抽象工厂模式
定义 抽象工厂模式(Abstract Factory Pattern):为创建一组相关或相互依赖的对象提供一个接口,并且无需指定它们的具体类 抽象工厂模式就是工厂方法模式的升级版,在拥有多个业务品种、业务分类时,而这时使用抽象工厂模式来产生对象就是一个非常好的解决方法 通用源码 例如有两个互相影响的产品线,如汽车工厂制造左车门和右车门,它们数量应该相等,不同的车车门型号不同等等 //**抽象产品类** public abstract class AbstractProductA { //产品共有的方法原创 2021-02-03 18:16:18 · 53 阅读 · 0 评论 -
2.工厂方法模式
定义 工厂方法模式也是我们使用频率相当高的模式 定义:定义一个用于创建对象的接口,让子类来决定实例化那一个类;工厂方法使一个类的实例化延迟到其子类 通用源码 在工厂方法模式中,会存在几个类: 抽象产品类Product负责定义所要生产的产品的共性,实现对事物最抽象的定义 抽象创建类Creator,也就是我们所谓的抽象工厂 实现工厂类ConcreteCreator,具体如何创建产品类由它来实现 通用源码如下: //抽象产品类 public abstract class Product { //产品类的公共原创 2021-02-02 18:15:59 · 101 阅读 · 0 评论 -
1.单例模式
定义 单例模式(Singleton Pattern)使我们平时较为常用与简单的模式 定义:确保一个类只产生了一个实例,并且自行实例化,向整个系统提供这个实例 通用源码 public class Singleton { private static final Singleton singleton = new Singleton(); //限制类产生多个对象不能new private Singleton() { } //只能通过这个方法来获得实例对象 public static Singleto原创 2021-01-30 13:33:40 · 136 阅读 · 2 评论 -
六大设计原则
设计原则 了解23种设计模式之前,先要了解6大设计原则 因为设计模式都是由这些设计原则引申出来的,6大设计原则是根本的东西 当然,如果想要直接了解设计模式当然也是可以的 但,多了解一下也不是坏处,大家自行选择 1.单一职责原则 单一职责原则(Single Responsibility Principle),简称SRP 定义 顾名思义,单一职责原则的定义就是:应该有且仅有一个原因引起类的变更 平常工作中,你可能会遇到有人问你 “你设计的类符合单一职责吗” 这时就可以根据单一职责原则的定义去进行排查 优势 优势原创 2021-01-25 17:15:23 · 286 阅读 · 0 评论