Design-Patterns
G0_hw
路漫漫其修远兮,吾将上下而求索
https://github.com/Go007/
https://gitee.com/hong_007/projects
展开
-
策略模式与模板方法模式的结合
/*** 场景示例说明:删除提货单 和 删除任务单 存在共有的逻辑(可以定义在抽象父类的模板方法中),* 后端rest分别提供删除提货单和删除任务单接口,在接口中根据操作标识选择 删除提货单 还是 删除任务单 的策略逻辑*/// 0. 定义操作策略接口public interface OperateStrategy { String operateType(); void operateHandle(TransTaskOperateRequestDto transTaskOper原创 2021-07-30 15:47:36 · 1431 阅读 · 0 评论 -
设计模式---代理模式
一. 概述代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象。代理模式有不同的形式, 主要有三种 静态代理、动态代理 (JDK代理、接口代理)和 Cglib代理 (可以在内存动态的创建对象,而不需要实现接口...原创 2019-07-14 19:15:22 · 172 阅读 · 0 评论 -
设计模式---命令模式
一. 概述命令模式(Command Pattern):在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计。命令模式使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活,实现解耦。在命令模式中,会将一个请求封装为一个对象,以便使用不同参数来...原创 2019-07-14 23:34:24 · 165 阅读 · 0 评论 -
设计模式---访问者模式
一. 概述访问者模式(Visitor Pattern),封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。主要将数据结构与数据操作分离,解决 数据结构和操作耦合性问题访问者模式的基本工作原理是:在被访问的类里面加一个对外提供接待访问者的接口访问者模式主要应用场景是:需要对一个对象结构中的对象进行很多不同操作(这些操作彼此没有关联),同...原创 2019-07-15 23:30:12 · 161 阅读 · 0 评论 -
设计模式---七大原则
设计模式原则,其实就是程序员在编程时,应当遵守的原则,也是各种设计模式的基础(即:设计模式为什么这样设计的依据)。一. 设计模式常用的七大原则单一职责原则接口隔离原则依赖倒转(倒置)原则里氏替换原则开闭原则迪米特法则合成复用原则二. 单一职责原则(Single Responsibility Principle) &n...原创 2019-07-07 14:57:39 · 416 阅读 · 0 评论 -
设计模式---桥接模式
一. 场景示例:手机操作问题传统解决方案:存在的问题分析:扩展性问题(类爆炸),如果我们再增加手机的样式(旋转式),就需要增加各个品牌手机的类,同样如果我们增加一个手机品牌,也要在各个手机样式类下增加。违反了单一职责原则,当我们增加手机样式时,要同时增加所有品牌的手机,这样增加了代码维护成本.解决方案-使用桥接模式二. 桥接模式桥接模式(Bridge模式)是指:将实现与抽...原创 2019-07-11 23:44:28 · 293 阅读 · 0 评论 -
设计模式---观察者模式
一. 概述 观察者模式:对象之间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化。Subject:登记注册、移除和通知registerObserver 注册removeObserver 移除notifyObservers() 通知所有的注册的用户,根据不同需求...原创 2019-07-18 21:59:38 · 156 阅读 · 0 评论 -
设计模式---中介者模式
一. 概述中介者模式(Mediator Pattern),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式属于行为型模式,使代码易于维护。比如MVC模式,C(Controller控制器)是M(Model模型)和V(View视图)的中介者,在前后端交互时起到了中间人的作用。原理类图:Med...原创 2019-07-18 22:47:45 · 133 阅读 · 0 评论 -
设计模式---迭代器模式
一. 概述迭代器模式(Iterator Pattern)是常用的设计模式,属于行为型模式如果我们的集合元素是用不同的方式实现的,有数组,还有java的集合类,或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决。迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不...原创 2019-07-16 23:00:10 · 117 阅读 · 0 评论 -
设计模式---备忘录模式
一. 概述备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。可以这样理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情,以防忘记了。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回...原创 2019-07-20 16:06:19 · 260 阅读 · 0 评论 -
设计模式---解释器模式
一. 概述在编译原理中,一个算术表达式通过词法分析器形成词法单元,而后这些词法单元再通过语法分析器构建语法分析树,最终形成一颗抽象的语法分析树。这里的词法分析器和语法分析器都可以看做是解释器。解释器模式(Interpreter Pattern):是指给定一个语言(表达式),定义它的文法的一种表示,并定义一个解释器,使用该解释器来解释语言中的句子(表达式)。应用场景• 应用可以将一个需要解...原创 2019-07-20 19:39:48 · 172 阅读 · 0 评论 -
设计模式---状态模式
一. 概述状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换。当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。原理类图:Context 类为环境角色, 用于维护State实例,这个实例定义当前状态State 是抽象状态角色,定义一个接口封装与Conte...原创 2019-07-21 16:42:49 · 168 阅读 · 0 评论 -
设计模式---享元模式
一. 享元模式享元模式(Flyweight Pattern) 也叫 蝇量模式: 运用共享技术有效地支持大量细粒度的对象。常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个。享元模式能够解决重复对象的内存浪费的问题,当系统中有大量相似对象,需要缓冲池时。不需总是创建新对象,可...原创 2019-07-14 17:02:44 · 171 阅读 · 0 评论 -
设计模式---外观模式
一. 概述外观模式(Facade),也叫“过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。外观模式可以理解为转换一群接口,客户只要调用一个接口,而不用调用多个接口才能达到目的。比如:在pc上安装软...原创 2019-07-13 16:52:05 · 160 阅读 · 0 评论 -
设计模式---模板方法模式
/** * 模板方法模式 需求: 计算1000个整数和1000个字符串相连接的耗时时间. 操作模板类:提供了统一的算法骨架 * * @author wh * */public abstract class OperateTemplete { public final long getTotalTime() { long begin = System.curren原创 2017-04-02 22:44:03 · 452 阅读 · 0 评论 -
设计模式---适配器模式
一.概述适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。举个生活中的例子,我们笔记本用到的充电器其实就是个适配器,笔记本电脑的工作电压是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?就是靠这...原创 2018-11-12 22:19:38 · 156 阅读 · 0 评论 -
设计模式---简单工厂模式
一.概述简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式,是由一个工厂对象决定创建出哪一种产品类的实例。二.代码演示/** * Created by John on 2018/6/22. * 简单工厂模式(静态工厂方法模式) */public class SimplePizzaFactory { public static P...原创 2018-11-11 15:47:18 · 158 阅读 · 0 评论 -
设计模式---工厂方法模式
一.概述上一篇介绍简单工厂模式的时候提到它对开闭原则支持的不够,因为如果有新的产品加入到系统中去,就需要修改工厂类,就违反了开闭原则了,这次介绍的工厂方法模式在保持简单工厂模式优点的前提下,还满足了开闭原则,关键在于它的多态性。工厂方法模式是类的创建模式,又叫做虚拟构造(Virtual Constructor)子模式或者多态工厂(Polymorphic Factory)模式。工厂方法模式的用...原创 2018-11-11 16:06:10 · 236 阅读 · 0 评论 -
设计模式---抽象工厂模式
一.概述抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,创建多个产品族中的产品对象。这就是抽象工厂的用意。从上图可以看出, 抽象工厂模式涉及到抽象工厂角色,具体工厂角色,抽象产品角色以及具体产品角色等四个角色:抽象工厂角色:担任这个角色的是工厂方法模式的核心,它是与应用程序无关的。任何在模式...原创 2018-11-11 21:47:40 · 214 阅读 · 0 评论 -
设计模式---原型模式
一.概述原型模式(Prototype Pattern):使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。实际上就相当于克隆,因为原型模式的意图是通过复制一个现有的对象来生成新的对象,而不是通过实例化的方式。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的...原创 2018-11-11 22:49:02 · 178 阅读 · 0 评论 -
设计模式---建造者模式
一.概述建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式,又称为生成器模式,它是一种较为复杂、使用频率也相对较低的创建型模式。建造者模式为客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品。举个简单的例子,比如我们去买电脑,买的是成品而不是散装的零件。产品的内部表象一个产品常有...原创 2018-11-12 21:42:38 · 317 阅读 · 0 评论 -
设计模式---责任链模式
一.什么是责任链模式责任链模式(Chain of Responsibility)将接收者对象连成一条链,并在该链上传递请求,直到有一个接收者对象处理它。通过让更多对象有机会处理请求,避免类请求的发送者和接收者之间的耦合。二.如何实现责任链模式/** * Created by John on 2018/11/22. * 价格处理人,负责处理客户折扣申请 */public abstr...原创 2018-11-22 23:07:43 · 148 阅读 · 0 评论 -
设计模式---工厂相关模式小结
什么是设计模式?设计模式是一套被反复使用,多数人知晓,经过分类编目的代码设计经验的总结.工厂模式概念实例化对象,用工厂方法代替new操作. 工厂模式包括工厂方法模式和抽象工厂模式. 抽象工厂模式是工厂方法模式的扩展.工厂模式的意图定义一个接口来创建对象,但是让之类来决定哪些类需要被实例化. 工厂方法就是把实例化的工作推迟到之类中实现.什么情况下适合用工厂模式有一组类似的对象需要创建 在编码原创 2017-05-11 21:58:39 · 255 阅读 · 0 评论 -
设计模式---UML类图
一. UML基本介绍UML——Unified modeling language UML (统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果。UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等,如下图:使用UML来建模,常用的工具...原创 2019-07-07 15:38:28 · 229 阅读 · 0 评论 -
设计模式---装饰器模式
一. 概述定义动态的将新功能附加到对象上,在对象功能扩展方面,它比继承更有弹性,也体现了开闭原则(ocp)。原理装饰器模式就像打包一个快递。Component主体/被装饰者):比如:陶瓷、衣服 和包装两部分;Decorator包装:比如:报纸填充、塑料泡沫、纸板、木板UML类图如下:在Component与ConcreteComponent之间,如果ConcreteCompone...原创 2019-07-13 12:32:03 · 166 阅读 · 0 评论 -
设计模式---组合模式
一. 概述组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式。组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理个别对象以及组合对象。原理类图对原理结构图的说明...原创 2019-07-13 16:06:54 · 153 阅读 · 0 评论 -
设计模式---单例模式
/** * 单例设计模式-双检锁 * * @author wh * */public class DoubleCheckLockSingleton { private static DoubleCheckLockSingleton instance = null; private DoubleCheckLockSingleton() { } public原创 2017-04-02 22:26:24 · 258 阅读 · 0 评论