设计模式
文章平均质量分 87
瑾年丶深蓝
这个作者很懒,什么都没留下…
展开
-
设计模式学习第二十三节 职责链模式
职责链模式概述案例总结概述 基本介绍 1、职责链模式Chain of Responsibility Pattern,也叫做责任链模式,为请求创建了一个接收者对象的链,责任链模式对请求的发送者和接收这进行解耦。这种模式属于行为型模式。 2、职责连模式通常每个接收者对象都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么他会把相同的请求传给下一个接收者。以此类推。 3、在一个软件系统中,可以处理某个请求的对象不止一个,例如学校OA系统中,教学办公用品的采购,教学主任、副原创 2021-01-08 16:34:13 · 121 阅读 · 0 评论 -
设计模式学习第二十二节 策略模式
策略模式概述案例应用分析题外话 Arrays.asList()方法不能add的小坑总结概述 策略模式(Strategy Pattern)基本介绍 1、在策略模式中,定义算法族,分别封装起来。让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户端。是一种行为型模式。 2、策略模式体现了几个设计原则:第一、把变化的代码从不变的代码中分离出来;第二、针对接口变成而不是具体的类(定义了策略接口);第三、多用组合/聚合,少用继承(客户端通过组合方式使用策略模式)。 3、在策原创 2021-01-08 10:44:10 · 136 阅读 · 0 评论 -
设计模式学习第二十一节 状态模式
状态模式概述案例总结概述 基本介绍 1、状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同行为的问题。状态和行为是一一对应的,状态之间可以相互转换。 2、当一个对象的内部状态发送变化时,允许改变其行为,对象看起来似乎修改了它的类。状态模式是行为型模式。 3、状态模式用于解决系统中复杂对象的状态转换,以及不同状态下行为的封装问题,当系统中的某个对象存在很多状态,这些状态之间可以进行转换,而且对象在不同状态下的拥有不同的行为。状态模式将原创 2021-01-07 16:31:53 · 122 阅读 · 0 评论 -
设计模式学习第二十节 解释器模式
解释器模式概述案例总结概述 基本介绍 1、解释器模式(Interpreter Pattern):定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的语言是指使用规定的格式和语法的代码。解释器模式是一种行为型模式。 2、解释器模式用于描述如何使用面向对象语言构成一个简单的语言解释器,在某些特定的情况下,为了更好的描述一类特定类型的问题,比如正则表达式,可以创建一种新的语言,这种语言拥有自己的表达式结构,也就是语法规则,使用解释器模式来设计这种新的语言,解释器模式是一种使原创 2021-01-06 15:58:07 · 213 阅读 · 1 评论 -
设计模式学习第十九节 备忘录模式
备忘录模式概述案例实现总结概述 基本介绍 1、备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复带原先保存的状态。备忘录模式属于行为型模式。 2、备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便的回退到一个特点的历史步骤,当新的状态无效或者存在问题时,可以使用暂存起来的备忘录将其恢复。 3、备忘录对象主要用来记录一个对象的某种状态,或者默写数据,可以从备忘录对象中获取原来原创 2021-01-05 16:23:48 · 205 阅读 · 0 评论 -
设计模式学习第十八节 中介者模式
中介者模式概述中介者模式应用案例总结概述 基本介绍 1、中介者模式(Mediator Pattern):用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显示的相互引用,从而使其耦合度降低,而且可以独立的改变它们直接的交互,使代码易于维护。属于行为型模式。 2、对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理。 3、比如MVC模式,C(controller控制器)是M(原创 2021-01-05 10:11:43 · 176 阅读 · 0 评论 -
设计模式学习第十七节 观察者模式
观察者模式概述实例分析与代码实现概述 观察者模式简要介绍 1、当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。 2、定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 3、一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。 4、一个对象(目标对象)的状态发生改变,所有的依赖对原创 2021-01-04 11:11:13 · 110 阅读 · 0 评论 -
设计模式学习第十六节 迭代器模式
迭代器模式概述迭代器简单实现注意细节概述 1、迭代器模式主要是用于容器与容器的遍历,属于行为型模式。 2、如果我们的集合元素使用不同的方式实现的,例如数组、Java集合类或者其它方式实现,当客户端需要遍历集合元素的时候,可能会需要多种遍历方式、而且还有可能暴露元素的内部结构,需要避免这些问题,可以考虑使用迭代器模式。 3、迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素。不需要知道集合对象的底层表示,也就是不需要暴露内部的结构。 类图简要示意原创 2021-01-03 16:41:03 · 160 阅读 · 2 评论 -
设计模式学习第十五节 访问者模式
访问者模式概述代码实现使用细节概述 基本介绍 1、访问者模式(Visitor Pattern),封装一些作用于某种数据结构的各个元素的操作,它可以在不该拜年数据结构的前提下定义作用于这些元素的新的操作。 2、主要将数据结构于数据操作分离,解决数据结构和操作耦合的问题。 3、访问者模式的基本工作原理是:在被访问类的里面添加一个对外提供接待访问者的接口。 4、访问者模式主要应用场景是:需要对一个对象结构中的对象进行很多不同操作(这些操作彼此没有什么关联),同时需要避免这原创 2020-12-31 11:35:49 · 183 阅读 · 0 评论 -
设计模式学习第十四节 命令模式
命令模式概述举例实现命令模式优缺点分析概述 基本介绍 1、命令模式(Command Pattern):“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式,也叫做Action/Transaction 2、在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接原创 2020-12-29 19:48:33 · 139 阅读 · 0 评论 -
设计模式学习第十三节 模版方法模式
模版方法模式概述代码实现模板方法模式钩子方法模版方法在Spring框架中的应用分析模版方法模式注意事项与细节概述 基本介绍 模版方法模式(Template Method Pattern),也叫做模版模式,在一个抽象类公开定义了执行它的方法的模版,它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。简单来说,模版方法模式就是定义一个操作中的算法(流程)的骨架,而将一些具体实现的步骤延迟到子类中实现,使得子类可以不改变算法的结构,就可以定义该算法的某些特定步骤。这种类型的设计模式原创 2020-12-29 11:46:47 · 125 阅读 · 0 评论 -
设计模式学习第十二节 代理模式
代理模式基本介绍静态代理动态代理Cglib代理扩展基本介绍 1、代理(Proxy)模式:为对象提供一个替身,以控制这个对象的访问。即通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 2、被代理的对象可以是远程对象,创建开销大的对象,或者需要安全控制的对象。 3、代理模式有不同的形式,主要有三种:静态代理、动态代理(接口代理,JDK代理)和Cglib代理(可以在内存中动态的创建对象而不需要实现接口,它是属于动态代理的一个原创 2020-12-28 16:12:36 · 554 阅读 · 1 评论 -
设计模式学习第十一节 享元模式
享元模式例题与需求概述简单享元模式例题与需求 例题 public static void main(String[] args) { String a = "zxc"; String b = "zxc"; String c = new String("zxc"); System.out.println(a == b); // true System.out.println(a == c); // false原创 2020-12-26 16:34:23 · 150 阅读 · 0 评论 -
设计模式学习第十节 外观模式
外观、门面、调停者需求概述代码实现总结需求 组建一个家庭影院 设备有:播放器、投影仪、屏幕、音响、灯光设备等等,若需要完成家庭影院的功能,它的过程大致为:找到各种遥控器,统筹设备开关、放下屏幕、打开投影仪、打开音响、打开播放器、调节灯光、播放、结束后关闭各种设备。 最直接的方式解决方案的类图大致描述如下 Client直接使用各个子系统的示意代码如下 @Test public void test(){ // 1、创建各种相关对象 /原创 2020-12-24 16:24:49 · 128 阅读 · 0 评论 -
设计模式学习第九节 组合模式
组合模式需求概述代码实现注意事项和细节需求 先整理一个需求,展示一个学校的院系组成,一个学校有多个学院,一个学院又有多个系。如何描述它们之间的关系?一种方案是将学院作为学校的子类,系作为学院的子类,类图描述如下:#mermaid-svg-hzXx72mZxEqF0eqz .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mer原创 2020-12-23 16:22:48 · 181 阅读 · 0 评论 -
设计模式学习第八节 装饰者模式
装饰者模式需求装饰者模式简介代码实现需求 咖啡订单需求 1、咖啡种类/单品咖啡:Decaf(无因咖啡) LongBlack(美式咖啡)等等。 2、可添加调料:Milk、Chocolate 等等。 3、要求在扩展新的咖啡种类或者调料时,具有良好的扩展性、可维护性。 4、使用面向对象的方式来计算不同种类咖啡的费用,客户可以点单品咖啡、也可以任意添加调料。 解决方案 如果组合出每种类可能类型的咖啡太过庞大 自己的思路#mermaid-svg-Kh4nxVgqx原创 2020-12-22 20:11:31 · 117 阅读 · 0 评论 -
设计模式学习第七节 桥接模式
桥接模式基本介绍桥接模式代码示例基本介绍 桥接模式(Bridge)是指:将实现与抽象放在两个不同的层次中,使两个层次可以独立改变。是一种结构型设计模式。Bridge模式是基于类的最小设计原则,通过使用封装、聚合、继承等行为让不同的类承担不同的职责,它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各个部分的独立性以及对应他们的功能扩展。 原理简要类图#mermaid-svg-8pPHrvrqMWGnf8N2 .label{fon原创 2020-12-21 20:15:00 · 142 阅读 · 0 评论 -
设计模式学习第六节 适配器模式
适配器模式 Adapter基本介绍类适配器模式对象适配器模式接口适配器模式基本介绍 1、适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,让原本因接口不匹配不能一起工作的两个类协同工作。其别名为包装器(Wrapper)。 2、适配器模式属于结构性模式,主要分为三类:类适配器模式、对象适配器模式、接口适配器模式。 工作原理简介 1)将一个类的接口转换成另一个接口,让原本接口不兼容的类可以兼容。 2)从用户的角度看不到被适配者,是解耦的。原创 2020-12-18 14:51:15 · 129 阅读 · 0 评论 -
设计模式学习第五节 建造者模式
建造者模式new复杂对象问题建造者模式new复杂对象问题 需求: 新建汽车对象,至少包含 大小、轮胎、装饰、发动机等等详细属性。最先想到的方式是直接new出对象。 代码实现package com.example.pattern.builder;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;/** * @author zjt * @date 2020-1原创 2020-12-15 11:46:22 · 164 阅读 · 1 评论 -
设计模式学习第四节 原型模式
原型模式三级目录三级目录原创 2020-12-10 14:20:20 · 132 阅读 · 0 评论 -
设计模式学习第三节 工厂模式
工厂模式案例分析简单工厂模式工厂方法模式抽象工厂模式JDK使用工厂模式的源码分析工厂模式总结案例分析 先梳理一个需要:披萨->要求便于披萨种类的扩展与维护 1、披萨的种类有很多(CheesePizza、BeefPizza…)。2、Pizza的制作有:prepare、bake、cut、box 先梳理设计类图 代码实现package com.example.pattern.factory.pizza;/** * @author zjt * @date 2020-原创 2020-12-03 14:29:16 · 105 阅读 · 0 评论 -
Java设计模式学习 第二节 设计模式概述与单例
设计模式概述与单例设计模式概述单例模式设计模式概述 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了提高代码的可维护性,通用性可扩展性,并且降低代码的复杂度。 设计模式分为三种类型,共23种原创 2020-12-02 10:44:56 · 115 阅读 · 0 评论 -
Java设计模式学习 第一节 设计模式的七大原则初窥
初窥Java设计模式七大原则设计模式简介设计模式的七大原则单一职责原则接口隔离原则 Interface segregation principle依赖倒转原则里氏替换原则开闭原则迪米特法则合成复用原则UML设计模式简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使用的、多数原创 2020-12-01 14:59:02 · 151 阅读 · 0 评论