![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 95
Json_wangqiang
JAVA全堆工程师
展开
-
设计模式解密(23) - 总结篇
索引目录&&传送门:总体来说设计模式分为三大类:创建型模式(5种):单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式结构型模式(7种):适配器模式、装饰者模式、代理模式、外观模式、桥接模式、组合模式、享元模式行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式...原创 2017-08-18 16:01:00 · 548 阅读 · 0 评论 -
设计模式解密(22)- 访问者模式
前言:访问者模式拆分 访问者模式基础篇 :https://blog.csdn.net/Json_wangqiang/article/details/85276202 访问者模式扩展篇 - 分派的概念: https://blog.csdn.net/Json_wangqiang/article/details/852762041、简介 定义:表示一个作用于其对象结构中的各元素...原创 2017-08-18 09:17:00 · 157 阅读 · 0 评论 -
设计模式解密(22)- 访问者模式 - 扩展篇(分派的概念)
前言:访问者模式拆分 访问者模式基础篇 :https://blog.csdn.net/Json_wangqiang/article/details/85276202 访问者模式扩展篇 - 分派的概念: https://blog.csdn.net/Json_wangqiang/article/details/85276204 1、分派的概念 变量被声明时的类型叫做变量的静态类型...原创 2017-08-18 09:24:00 · 161 阅读 · 0 评论 -
设计模式解密(11)- 命令模式
◆ 前言:命令模式内容比较多,这里做了拆分命令模式基础篇 :https://blog.csdn.net/Json_wangqiang/article/details/85276179命令模式扩展篇 - 宏命令:https://blog.csdn.net/Json_wangqiang/article/details/85276185命令模式扩展篇 - 撤销命令:https://...原创 2017-07-19 17:17:00 · 202 阅读 · 0 评论 -
设计模式解密(10)- 迭代器模式
1、简介定义:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示;主要用途:帮助我们遍历聚合对象;关键代码:定义接口:hasNext, next;英文:Iterator类型:行为型模式2、类图及组成(引)类图:组成: 抽象容器:一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,Li...原创 2017-07-17 19:17:00 · 163 阅读 · 0 评论 -
设计模式解密(9)- 装饰者模式
1、简介定义:装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。拆分定义,总结特点: 1、不改变原类文件。 2、不使用继承。 3、动态扩展。主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引...原创 2017-07-17 12:24:00 · 194 阅读 · 0 评论 -
设计模式解密(8)- 适配器模式
1、简介定义:适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。实现方式: 1、类的适配器模式(采用继承实现) 2、对象适配器(采用对象组合方式实现)注意事项:适配器不是在详细设计时添加的,...原创 2017-07-14 15:51:00 · 283 阅读 · 0 评论 -
设计模式解密(7)- 代理模式
1、简介定义:为其他对象提供一种代理以控制对这个对象的访问 ;分类:静态代理(静态定义代理类,我们自己静态定义的代理类) 动态代理(通过程序动态生成代理类,该代理类不是我们自己定义的。而是由程序自动生成)-- 这是与静态代理主要的区别!!!主要解决:在直接访问对象时带来的问题,直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层;...原创 2017-07-13 16:50:00 · 177 阅读 · 0 评论 -
设计模式解密(6) - 建造者模式(生成器模式)
1、简介定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。分解一下定义: 1、复杂对象的表示; 2、复杂对象的构建过程; 3、可分离的通用构建过程,也适用于其它复杂对象的表示; 4、适用于一些基本部件不会变,而其组合经常变化的时候。英文:Builder类型:创建类模式 2、原理及组成引:类图四个要素:产品...原创 2017-07-07 17:38:00 · 197 阅读 · 0 评论 -
设计模式解密(5)- 外观模式(门面模式)
1、简介外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。使用外观模式时,我们创建了一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直接通过外观类来调用内部子系统中方法,从而外观模式让客户和子系统之间避免了紧耦合。外观模式的目的不是为了给子系统添加新的功能接口,而是为了让外部减少与子系统内多个模块的交互,松散耦合...原创 2017-07-05 18:02:00 · 245 阅读 · 0 评论 -
设计模式解密(4)- 模板方法模式
1、简介定义:一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。模板方法模式,一般是为了统一子类的算法实现步骤,所使用的一种手段或者说是方式。它在父类中定义一系列算法的步骤,而将具体的实现都推迟到子类。最典型的形式就是一个接口,一个抽象父类,父类中会有一系列的抽象方法,而在子类中去实现这些方法。英文:Templa...原创 2017-07-05 11:39:00 · 148 阅读 · 0 评论 -
设计模式解密(3)- 策略模式
1、简介定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。策略模式的决定权在用户,系统本身提供不同算法的实现,新增或者删除算法,对各种算法做封装。因此,策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法即可。英文:Strategy类型:行为类模式2、实例引入背景:模拟商城的促销活动,旨在了解模式先定义一个活动接口:package c...原创 2017-07-03 10:46:00 · 264 阅读 · 0 评论 -
设计模式解密(2)- 工厂模式(简单工厂、工厂方法、抽象工厂)
1、前言工厂模式主要是为创建对象提供接口,将创建对象的过程隔离起来,实现了创建者与调用者的分离,提高了程序的灵活性;核心本质: 实例化对象,用工厂方法代替new操作; 将选择实现类、创建对象统一管理和控制,从而将调用者跟我们实现类解耦;工厂模式分类: 简单工厂模式(Simple Factory)(又称:静态工厂方法模式) 工厂方法模式(Factory Meth...原创 2017-06-30 16:25:00 · 200 阅读 · 0 评论 -
设计模式解密(21)- 解释器模式
1、简介定义:给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。主要解决:对于一些固定文法构建一个解释句子的解释器。本质:分离实现,解释执行。Interpreter模式其实就是一种简单的语法解释器构架。英文:Interpreter类型:行为型2、类图及组成(引)类图:组成: AbstractExpression(...原创 2017-08-16 11:56:00 · 223 阅读 · 0 评论 -
设计模式解密(20)- 职责链模式
1、简介定义:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。本质:分离职责,动态组合。 分离职责:分离职责是前提,只有先把复杂...原创 2017-08-15 13:28:00 · 189 阅读 · 0 评论 -
设计模式解密(11)- 命令模式 - 扩展篇(命令队列)
前言:命令模式内容比较多,这里做了拆分命令模式基础篇 :https://blog.csdn.net/Json_wangqiang/article/details/85276179命令模式扩展篇 - 宏命令:https://blog.csdn.net/Json_wangqiang/article/details/85276185命令模式扩展篇 - 撤销命令:https://blog.cs...原创 2017-07-19 17:22:00 · 290 阅读 · 0 评论 -
设计模式解密(11)- 命令模式 - 扩展篇(宏命令)
前言:命令模式内容比较多,这里做了拆分命令模式基础篇 :https://blog.csdn.net/Json_wangqiang/article/details/85276179命令模式扩展篇 - 宏命令:https://blog.csdn.net/Json_wangqiang/article/details/85276185命令模式扩展篇 - 撤销命令:https://blog.cs...原创 2017-07-19 17:22:00 · 301 阅读 · 0 评论 -
设计模式解密(11)- 命令模式 - 扩展篇(请求日志)
前言:命令模式内容比较多,这里做了拆分命令模式基础篇 :https://blog.csdn.net/Json_wangqiang/article/details/85276179命令模式扩展篇 - 宏命令:https://blog.csdn.net/Json_wangqiang/article/details/85276185命令模式扩展篇 - 撤销命令:https://blog.cs...原创 2017-07-19 17:22:00 · 263 阅读 · 0 评论 -
设计模式解密(11)- 命令模式 - 扩展篇(撤销命令)
前言:命令模式内容比较多,这里做了拆分命令模式基础篇 :https://blog.csdn.net/Json_wangqiang/article/details/85276179命令模式扩展篇 - 宏命令:https://blog.csdn.net/Json_wangqiang/article/details/85276185命令模式扩展篇 - 撤销命令:https://blog.cs...原创 2017-07-19 17:22:00 · 262 阅读 · 0 评论 -
设计模式解密(12)- 桥接模式
1、简介定义:将抽象部分与实现部分分离,使它们都可以独立的变化。主要解决:在多维可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。何时使用:实现系统可能有多个角度分类,每一种角度都可能变化。如何解决:把这种多角度分类分离出来,让它们独立变化,减少它们之间耦合。注意事项:对于两个独立变化的维度,使用桥接模式再适合不过了。英文:bridge类型:结构型...原创 2017-07-25 13:43:00 · 184 阅读 · 0 评论 -
设计模式解密(13)- 组合模式
1、简介定义:允许你将对象组合成树形结构来表现"整体-部分"层次结构。 组合能让客户以一致的方法处理个别对象以及组合对象。主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。英文:Composite类型:结构型2、类图及组成(引)类图:组成: ● ...原创 2017-07-26 15:00:00 · 211 阅读 · 0 评论 -
设计模式解密(14)- 状态模式
1、简介定义:允许对象在内部状态改变时改变它的行为, 对象看起来好像修改了它的类。主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。本质:根据状态来分离和选择行为。英文:state类型:行为型2、问题引入 大家都在玩王者农药,这里就以王者农药的英雄为例,讲解状态模式,问题:模拟英雄移动状态的变化!!!这里简单模拟,实现四个...原创 2017-07-28 09:33:00 · 184 阅读 · 0 评论 -
设计模式解密(15)- 中介者模式(调停者模式)
1、简介别名:调停者模式定义:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显示地相互引用。从而使其耦合松散,而且可以独立地改变它们之间的交互。主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理。何时使用:多个类相互耦合,形成了网状结构。如何解决:将上述...原创 2017-07-31 16:59:00 · 205 阅读 · 0 评论 -
设计模式解密(16)- 观察者模式
1、简介定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:当一个对象(目标对象)的状态发生改变,如何让所有的依赖对象(观察者对象)都将得到通知。本质:触发联动英文:Observer类型:行为型2、类图及组成(引)类图:组成: 抽象主题(Subject)角色: 抽象主题角色把所有...原创 2017-08-02 11:42:00 · 163 阅读 · 0 评论 -
设计模式解密(17)- 备忘录模式
1、简介定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态。解释:也就是说,不破坏源数据的情况下,将源数据进行一次或者多次的备份。本质:保存和恢复内部状态。英文:Memento类型:行为型2、类图及组成(白箱实现与黑箱实现)前言:备忘录模式按照备忘录角色的形态不同,分为白箱实现与黑箱实现,...原创 2017-08-04 12:15:00 · 224 阅读 · 0 评论 -
设计模式解密(18)- 原型模式
1、简介定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。功能:①是通过克隆来创建新的对象实例;②是为克隆出来的新的对象实例复制原型实例属性的值。本质:通过克隆来创建新的对象实例。英文:Prototype类型:创建型2、类图及组成(引)类图:组成: Prototype:声明一个克隆自身的接口,用来约束想要克隆自己的类,要求它...原创 2017-08-08 09:36:00 · 166 阅读 · 0 评论 -
设计模式解密(1)- 单例模式
1、前言1-1、 概述 设计模式 = 某类特定问题的解决方案,那么单例模式是解决什么问题的解决方案呢? 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 含义:单例 = 一个实例 解决的问题:在任何时间内只有一个类实例存在的模式 解决方法:保证一个类只有一个实例化对象,并提供一个全局访问入口 本质:控制实例的数量 注...原创 2017-06-29 15:59:00 · 204 阅读 · 0 评论