![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 51
Astruries
知识就是力量
展开
-
java23种设计模式—工厂模式
设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。工厂模式简而言之就是用来创建对象的,属于...原创 2018-06-10 22:31:59 · 3144 阅读 · 0 评论 -
java23种设计模式—命令模式
java23种设计模式—命令模式在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern)。定义将一个请求封装成一个对象,从而让你使用...原创 2018-09-19 23:09:30 · 124 阅读 · 0 评论 -
java23种设计模式-访问者模式
定义 封装一些作用于某种数据结构中各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。UML角色Visitor : 抽象访问者接口Element : 被访问元素接口ElementA,ElementB : 具体元素,实现了Element接口VisitorA,VisitorB : 具体访问者,实现了Visitor接口ObjectSt...原创 2018-09-15 15:37:48 · 160 阅读 · 0 评论 -
java23种设计模式-适配器模式
定义适配器模式是把一个类的接口转换成客户所期望的另一种接口,从而使原本不匹配而无法在一起工作的两个类可以一起工作。UML角色Target: 符合客户端期望的接口。Adaptee: 需要被适配的类。此类包含了客户端想要实现的大部分功能,但并不能完成客户端所想完成的所有任务,同时又不能被直接修改,因此需要被适配。Adapter: 适配器类。继承了Adaptee类的方法,如funct...原创 2018-10-02 12:32:35 · 154 阅读 · 0 评论 -
java23种设计模式-装饰者模式
定义装饰模式指的是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。UML角色Component: 抽象组件接口ConcreteComponent: 具体组件实现类Decorator: 由abstract申明的抽象装饰者类,实现了Component接口ConcreteDecorator: 抽象装饰者的具体实现...原创 2018-10-05 16:06:51 · 162 阅读 · 0 评论 -
java23种设计模式-门面(外观)模式
定义外观模式为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。UML角色子系统(SubSystem): 表示一个系统的子系统或者模块门面(Facade): 客户端通过门面间接控制子系统。门面屏蔽了客户端无需知道的细节,简化了调用过程。示例我们使用的电脑的用户桌面便是一个很好的例子。桌面充当门面角色,用户使用的各应用可以看作子...原创 2018-10-06 16:47:00 · 200 阅读 · 0 评论 -
java23种设计模式-代理模式
定义为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。UML角色Target: 被代理类的接口。TargetImpl: 被代理类的实现。TargetProxy: Target实例的代理类,控制客户端访问Target对象。示例静态代理的实现/** * desc :...原创 2018-10-07 20:29:17 · 171 阅读 · 0 评论 -
java23种设计模式--桥接模式
定义1.将抽象部分与实现部分分离,使它们都可以独立的变化。2.将抽象和实现放在两个不同的类层次中,使它们可以独立地变化。——《Head First 设计模式》UML角色抽象化角色: 抽象了类的基本功能。聚合一个实现化角色完成功能。实现化角色接口: 一个类或者接口。定义实现化接口的基本功能。具体实现化角色: 实现了实现化角色定义的功能,使得具体实现能脱离抽象部分而独立变化。...原创 2018-10-14 17:02:13 · 192 阅读 · 0 评论 -
java23种设计模式-解释器模式
定义给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子UML角色抽象表达式(Expression):声明一个所有的具体表达式角色都需要实现的抽象接口。该接口提供一个interpret()方法。终结符表达式(Terminal Expression) :实现了抽象表达式接口,有一个interpret()方法;文法中的每一个终结符都有一个具体...原创 2018-09-30 19:04:08 · 207 阅读 · 0 评论 -
java23种设计模式--享元模式
定义享元模式以共享的方式高效地支持大量的细粒度对象。是结构型创建模式。UML角色FlyWeight: 抽象享元接口ConcreteFlyWeight: 具体享元类,实现了享元类。该类对象在创建时便初始化内蕴状态。FlyWeightFactory: 享元对象创建与管理工厂类。当创建一个享元对象时,先在工厂所维护的集合中查找是否存在可以共享的对象,存在则直接返回,不存在则创建并加入...原创 2018-10-16 15:17:51 · 394 阅读 · 0 评论 -
java23种设计模式-中介者模式
定义用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。角色Colleague:是一个抽象类或者接口,提供和其他Colleague通讯的方法notify(String name)。参数name是其他Colleague的名字。ColleagueA,ColleagueB: 都是Colleague的实现类。Med...原创 2018-09-24 14:16:44 · 181 阅读 · 0 评论 -
java23种设计模式-状态模式
定义 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。状态模式是一种对象行为型模式。角色状态模式角色分类如下抽象状态接口。定义状态的抽象行为。使用抽象类或者接口(interface)实现。具体状态接口。实现了抽象状态。环境类。聚合了一个状态引用,环境类可以根据环境的变化,动态改变状态引用所指向的具体状态对象。环境对象改变内部状态的特性,使该模...原创 2018-09-01 18:26:16 · 157 阅读 · 0 评论 -
java23种设计模式-备忘录模式
定义 备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。角色发起人 Originator 负责创建备忘录对象或者从特定备忘录对象获取数据,以恢复到之前的某个状态。 备忘...原创 2018-08-26 18:36:11 · 164 阅读 · 0 评论 -
java23种设计模式—单例模式的几种实现
饿汉式该方式创建的单例对象天生具有线程安全特性。原因很简单,JVM类加载器初次加载类的时候就创建了对象。实现起来也比较简单,只有一个地方需要注意,就是构造器要设计为private以防止类外部创建对象。/** * Created by tiantian on 2018/6/29. */public class HungrySingleTon { private s...原创 2018-07-01 01:02:52 · 2887 阅读 · 0 评论 -
java23种设计模式—建造者模式
1. 定义:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的对象。简单点描述就是将一个复杂对象的构建拆分成若干步骤,每个构建步骤赋予复杂对象不同的属性,如此以来,通过同样的构建过程可以创建不同的对象。对象的构建过程由指导者director指导。客户端通过指导者创建需要的对象。2. 该模式包含的角色及其功能:- 产品:需要被构造的对象- 建造者:具有一系列构建...原创 2018-06-20 10:48:30 · 3004 阅读 · 0 评论 -
java23种设计模式—原型模式
原型模式也属于创建型模式。简言之,就是如何复制一个对象的设计模式。创建对象的方式有很多种,对java而言,可以在JVM堆中new一个,也可以通过反射、序列化,又或者相应的对象工厂也可以代劳。我们关注的点是,创建对象的开销。当创建一个对象的消耗比较大的时候,使用原型模式可以很高效的创建对象。在java中顶层对象Object提供了clone()方法,只要我们正确的实现Cloneable接口的clone...原创 2018-07-07 18:42:56 · 2845 阅读 · 0 评论 -
java23种设计模式—策略模式
策略模式是一种行为型设计模式,维基百科解释如下行为型设计模式:行为型设计模式是设计模式都一种,用来识别对象之间的常用交流模式并加以实现。如此可在进行这些交流活动时增强弹性。由此可以看出,行为型设计模式关注的是对象之间的通讯行为。定义策略模式:定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法都变化独立于使用算法都客户。角色分类 1.抽象策略接口 2.具体策略类 3.环境类UML图:常...原创 2018-07-14 20:42:13 · 3046 阅读 · 0 评论 -
java23种设计模式-模版方法模式
定义定义一个算法中的操作框架,而将一些步骤延迟到子类中。使得子类可以不改变算法结构即可重定义该算法的某些特定步骤。角色该设计模式的角色划分较为简单抽象模版类具体模版类抽象模版类又包含了这样几个方法:模版方法,具体方法,抽象方法,勾子方法。模版方法决定了算法的实现步骤,该方法中调用了具体方法,待实现的抽象方法,勾子方法等。是算法执行的一个模版。具体方法...原创 2018-07-29 15:47:39 · 176 阅读 · 0 评论 -
java23种设计模式—观察者模式
定义观察者模式定义了对象之间的一对多依赖,当一个对象改变状态时,它大所有依赖者都会收到通知并自动更新。 角色观察者模式主要包含的角色为抽象观察者,抽象主题,以及它们各自具体的实现。 推模型推模型是一种主题对象状态发生变化时主动推送信息给所有观察者的模型,无论是否需要,被注册的观察者只能被动地接受改变。 抽象主题 /** * Create...原创 2018-07-22 19:51:44 · 162 阅读 · 0 评论 -
java23种设计模式-迭代器模式
定义 提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。角色抽象迭代器 定义了迭代器内部该有的方法具体迭代器 抽象迭代器的实现,has a 具体可迭代对象抽象容器 提供创建迭代器的方法以及一组集合对象的操作方法具体容器 实现了抽象容器实现/** * desc : 抽象迭代器 * Created by tiantian on...原创 2018-08-12 22:28:11 · 132 阅读 · 0 评论 -
java23种设计模式-责任链模式
定义 属于行为型模式的一种,一个请求由多个对象来处理,这些对象形成一条链,请求沿着该链传递,直到该链上的某个对象处理它为止。角色抽象处理者 定义了处理方法,并且可以设置和返回下一个处理者。为接口或抽象类具体处理者 抽象处理者的实现实现/** * desc : 抽象处理者 * Created by tiantian on 2018/8/19 */p...原创 2018-08-19 16:25:06 · 158 阅读 · 0 评论 -
java23种设计模式-组合器模式
定义将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。–GoF《设计模式》UML角色Component: 组合中的对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理Component子部件。Leaf:* 在组合中表示叶子结点对象,叶子结点没有子结点。Composite: 定义有枝节点行为,...原创 2018-10-16 16:16:10 · 659 阅读 · 1 评论