![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
黑洞刺客
这个作者很懒,什么都没留下…
展开
-
JAVA设计模式--备忘录模式
一、什么是备忘录模式 备忘录(Memento)模式又叫作快照(Snapshot)模式或Token模式,是一种对象的行为模式。在备忘录模式里,一个备忘录是一个对象,它存储另一个对象(备忘录的原发器)在某个瞬间的内部状态。备忘的目的就是为了以后在需要的时候,可以将原发器对象的状态恢复(undo/rollback)到备忘录所保存的状态。 备忘录的本质:保存和恢复状态。 设计意图: 在不破坏封装性的前提下...转载 2019-02-28 08:49:25 · 1397 阅读 · 0 评论 -
JAVA设计模式--建造者模式
部分经典内容引用: 点击打开链接:http://www.cnblogs.com/lwbqqyumidi/p/3742562.html一、什么是建造者模式 建造者(Builder)模式也叫生成器模式,是由GoF提出的23种设计模式中的一种,其设计意图是:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 GoF给出的描述很简短,不易理解,我是这样理解的:我们要创建的对象会包...转载 2019-02-26 16:03:23 · 136 阅读 · 0 评论 -
JAVA设计模式--装饰模式
部分经典内容引用: 点击打开链接:http://www.cnblogs.com/java-my-life/archive/2012/04/20/2455726.html一、什么是装饰模式 装饰( Decorator )模式又叫做包装( Wrapper )模式,它通过一种对客户端透明的方式来扩展对象的功能,是继承关系的一个替换方案。二、装饰模式实现 装饰模式通过一种对客户端透明的方式动态地为一个...转载 2019-02-26 16:49:10 · 165 阅读 · 0 评论 -
JAVA设计模式--策略模式
一、什么是策略模式 策略(Strategy)模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable. Strategy...转载 2019-02-26 17:08:09 · 114 阅读 · 0 评论 -
JAVA设计模式--观察者模式
一、什么是观察者模式 观察者(Observer)模式是行为模式之一,它的作用是当一个被观察对象的状态发生变化时,能够自动通知相关的观察者对象,自动更新观察者对象中被观察对象的状态。它提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。二、观察者模式的典型应用 观察者(Observer)模式多被应用于以下场景: - 侦听事件驱动程序设计中的外部事件 - 侦听/监视某个对象...转载 2019-02-26 17:23:25 · 97 阅读 · 0 评论 -
JAVA设计模式--代理模式(静态)
文章中部分经典内容参考以下博文: http://www.lxway.com/4445954962.htm http://blog.csdn.net/lovelion/article/details/8116704 https://www.ibm.com/developerworks/cn/java/j-lo-proxy-pattern/一、什么是代理模式 代理(Proxy)模式为其他对象提供一种...转载 2019-02-26 17:27:08 · 104 阅读 · 0 评论 -
JAVA设计模式--代理模式(动态)(一)
深入理解Java Proxy机制一、什么是动态代理 在静态代理(Static Proxy)模式中,代理类都是真实存在的,由程序员提前创建好的java类,是静态的,每一个代理类在编译之后都会生成一个.class字节码文件,静态代理类所实现的接口和所代理的方法早在编译期都已被固定了。 动态代理(Dynamic Proxy)则不同:动态代理使用字节码动态生成和加载技术,在系统运行时动态地生成和加载代理类...转载 2019-02-27 09:29:17 · 129 阅读 · 0 评论 -
JAVA设计模式--代理模式(动态)(二)
深入理解Java Proxy机制一、前章回顾 在前一章“《学习笔记》之JAVA设计模式--代理模式(动态)(一)”中我们分别使用JDK自带的动态代理和CGLIB动态代理为数据库增加了日志记录功能。然而,生成的动态代理类到底是个什么样子呢?本章我们就一起来揭开它的庐山真面目。二、深入剖析JAVA动态代理类 我们先来看看生成的动态代理类是什么类型,对前一章第二节中示例的客户端进行如下简单修改,将生成的...转载 2019-02-27 09:11:13 · 125 阅读 · 0 评论 -
JAVA设计模式--适配器模式
1、什么是适配器模式 适配器(Adapter)模式又叫做包装( Wrapper )模式,是由GOF提出的23种设计模式中的一种结构型设计模式,Adapter模式的设计意图:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。2、适配器模式的结构 适配器模式分为类适配器模式(采用继承方式实现)、对象适配器模式(采用对象组合方式实现)和接口适配器模式...转载 2019-02-27 09:10:21 · 138 阅读 · 0 评论 -
JAVA设计模式--享元模式
Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。 Java中的String类型 在JAVA语言中,String类型就是使用了享元模式。String对象是final类型,对象一旦创建就不可改变。在JAVA中字符串常量都是存在常量池中的,J...转载 2019-02-27 09:09:41 · 873 阅读 · 0 评论 -
JAVA设计模式--访问者模式
一、什么是访问者模式 访问者(Visitor)模式是一种对象的行为模式。在访问者模式里,每个访问者表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 在面向对象的系统开发和设计过程中,经常遇到的一种情况就是需求变更,针对已经开发完成的系统,客户又会提出新的需求。因此,我们不得不去修改已有的设计,最常见就是解决方案就是给已经设计、实现好的类添加...转载 2019-02-27 10:04:16 · 176 阅读 · 0 评论 -
JAVA设计模式--桥接模式
一、什么是桥接模式 桥接(Bridge)模式是构造型的设计模式之一。桥接模式基于类的最小设计原则,通过使用封装,聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。 二、桥接模式的应用场景《研磨设计模式》中给出这么一个场景:发送消息。 从消息的重要程度...转载 2019-02-27 10:58:59 · 195 阅读 · 0 评论 -
JAVA设计模式--原型模式
部分经典内容引用: http://www.cnblogs.com/java-my-life/archive/2012/04/11/2439387.html http://blog.csdn.net/jason0539/article/details/23158081一、什么是原型模式 原型(Prototype)模式是一种对象创建型模式,它通过原型实例指定创建对象的种类,并采用拷贝原型实例的方法来...转载 2019-02-26 15:43:52 · 123 阅读 · 0 评论 -
JAVA设计模式--单例模式
一、什么是单例模式 单例(Singleton)模式是一种对象创建型模式,保证一个类只有一个实例存在,同时该类提供能对该实例加以访问的全局访问方法。 单例模式的本质:控制实例个数 设计意图: 使用单例模式,可以保证为一个类只生成唯一的实例对象。也就是说,在整个程序空间中,该类只存在一个实例对象。 二、单例模式的应用场景 如果碰到以下情况,可以考虑使用单例模式: - 在多个线程之间,比如ser...转载 2019-02-26 14:37:35 · 114 阅读 · 0 评论 -
JAVA设计模式--组合模式
一、什么是组合模式 组合(Composite)模式是一种对象的行为模式。将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 组合模式的本质:统一叶子对象和组合对象。 组合模式的目的:让客户端不再区分操作的是组合对象还是叶子对象,而是以一个统一的方式来操作。二、组合模式的适用性 在开发中, 我们经常可能要递归构建树状的组合结构,比如以下的商品...转载 2019-02-28 08:49:36 · 7032 阅读 · 3 评论 -
JAVA设计模式--状态模式
一、什么是状态模式 状态(State))模式,又称状态对象(Pattern of Objects for States)模式,是一种对象的行为模式。状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。 状态模式的本质:根据状态来分离和选择行为。二、状态模式的结构 状态模式涉及的角色及其职责如下: 环境(Context)角色:也称上下文,通常用来定义客...转载 2019-02-28 08:49:47 · 115 阅读 · 0 评论 -
JAVA设计模式--模板方法模式
一、什么是模板方法模式 模板方法(TemplateMethod)模式是一种对象的行为模式。定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模版方法模式的本质:固定算法骨架二、模板方法模式的结构 模板方法模式涉及的角色及其职责如下: 抽象类(AbstractClass)角色:用来定义算法骨架(template m...转载 2019-02-27 17:30:08 · 112 阅读 · 0 评论 -
JAVA设计模式--迭代器模式
一、什么是迭代器模式 迭代器(Iterator)模式又叫作游标(Cursor)模式,是一种对象的行为模式。提供一种方法顺序访问一个聚合(指一组对象的组合结构,如:Java中的集合、数组等)对象中各个元素,而又不需暴露该对象的内部表示。 迭代器模式的本质:控制访问聚合对象中的元素。 设计意图: 无须暴露聚合对象的内部实现,就能够访问到聚合对象中的各个元素。二、迭代器模式的结构 迭代器模式涉及的...转载 2019-02-28 08:49:55 · 307 阅读 · 0 评论 -
JAVA设计模式--命令模式
一、什么是命令式 命令(Command)模式又叫作动作(Action)模式或事务(Transaction)模式,是一种对象的行为模式。将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。 命令模式的本质:封装请求 设计意图:命令模式通过将请求封装到一个命令(Command)对象中,实现了请求调用者和具体实现者之间的解耦。二、命令模式的适...转载 2019-02-28 08:50:05 · 154 阅读 · 0 评论 -
JAVA设计模式--中介者模式
一、什么是中介者式 中介者(Mediator)模式(亦被称为调停者模式)是一种对象的行为模式。用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 中介者模式的本质:封装交互。 设计意图:面向对象设计鼓励将行为分布到各个对象中。这种分布可能会导致多个对象之间需要相互交互,从而形成紧密耦合,不利于对象的修改和维护。在最坏的情况...转载 2019-02-28 08:50:14 · 163 阅读 · 0 评论 -
JAVA设计模式--外观模式
一、什么是外观模式 外观(Facade)模式是一种对象的结构型模式。为子系统中的一组接口提供一个一致的界面, Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式的本质:封装交互,简化调用 设计意图:隐藏系统的复杂性,并向客户端提供一个可以访问系统的简单接口,以降低用户使用系统的复杂性。 将一个系统划分成为若干个子系统有利于降低系统的复杂性。一个常见的设计目标是...转载 2019-02-28 08:50:24 · 138 阅读 · 0 评论 -
JAVA设计模式--解释器模式
一、什么是解释器模式 解释器(Interpreter)模式是一种对象的行为模式。给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 所谓“语言”,指的是使用规定格式和文法的一类字符组合。 所谓“文法”,简单点说就是我们俗称的“语法规则”。 以java语言为例,其变量声明文法为:[public|protected|private]+[static]+[f...转载 2019-02-28 08:50:36 · 171 阅读 · 0 评论 -
JAVA设计模式--简单工厂模式
一、什么是简单工厂模式 简单工厂模式属于类的创建型模式。提供一个创建对象实例的功能,而无须关心其具体实现。被创建实例的类型可以是接口、抽象类,也可以是具体的类。 简单工厂模式的本质:选择实现 设计意图: 通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。二、简单工厂模式的结构 简单工厂模式涉及的角色及其职责如下: 工厂(Factory)角色:简单工厂模式的核心,它负责实...转载 2019-02-26 13:56:39 · 162 阅读 · 0 评论 -
JAVA设计模式--工厂方法模式
一、什么是工厂方法模式 工厂方法模式同样属于类的创建型模式又被称为多态工厂模式 。工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。二、模式中包含的角色及其职责 抽象工厂(Fac...转载 2019-02-26 14:11:19 · 104 阅读 · 0 评论 -
JAVA设计模式--抽象工厂模式
一、什么是抽象工厂模式 抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。 此处引入了一个新的概念产品族,那什么是产品族呢?百度一下:产品族是以产品平台为基础,通过添加不同的个性模块,以满足不同客户个性化需求的一组相关产品。 图.产品族等级结构示意 所谓产品族通俗来说即是...转载 2019-02-26 14:26:53 · 140 阅读 · 0 评论 -
JAVA设计模式--职责链模式
一、什么是职责链模式 职责链(Chain of Responsibility)模式是一种对象的行为模式。在职责链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配职责。 职责链模式的本质:分离职责、动态组合。 设...转载 2019-02-27 11:20:52 · 165 阅读 · 0 评论