设计模式-REST
文章平均质量分 85
从源码读设计模式
流烟默
这个作者很懒,什么都没留下…
展开
-
【每日一面】关于设计模式
【1】简述一下你了解的设计模式所谓设计模式,就是一套被反复使用的代码设计经验的总结(情境中一个问题经过证实的一个解决方案)。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使人们可以更加简单方便的复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。在GoF的《Design Patterns: Elements of Re...原创 2019-01-17 18:34:10 · 485 阅读 · 2 评论 -
Java的三大特性之封装、继承和多态详解
面向对象编程有三大特性:封装、继承、多态。【1】封装封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以完成自己的操作。使用封装有几大好处:良好的封装能够减少耦合。类内部的结构可以自由修改。可以对成员进...原创 2019-01-15 19:23:08 · 3831 阅读 · 0 评论 -
认真学习设计模式之委派模式(Delegate Pattern)
委派模式不属于GOF23种设计模式, 主要角色有三种: 抽象任务角色, 委派者角色, 具体任务角色。**委派模式**具体是指定义一个抽象接口, 它有若干实现类, 他们真正执行业务方法, 这些子类是具体任务角色。定义委派者角色也实现该接口, 但它负责在各个具体角色实例之间做出决策, 由它判断并调用具体实现的方法。联想到工作中就是leader将任务分派给小组长,小组长进行任务具体拆分到个人。通常委派模式对外隐藏了具体实现, 仅将委派者角色暴露给外部。是不是立马想到了外观?如果委派者和具体的Concret原创 2016-09-23 08:34:33 · 21241 阅读 · 0 评论 -
认真学习设计模式之外观模式(Facade Pattern)
# 【1】概述`外观模式(Facade),也叫“过程模式`:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。**UML原理图**![在这里插入图片描述](https://img-blog.csdnimg.cn/997a1e5d30e64fd0b3693875754e468e.png)**对类图说明(分类外观原创 2017-11-14 10:08:48 · 1086 阅读 · 0 评论 -
认真学习设计模式之迭代器模式(Iterator Pattern)
# 【1】概述迭代器模式(Iterator Pattern)是常用的设计模式,属于`行为型`模式。如果我们的集合元素是用不同的方式实现的,有数组,还有java 的集合类,或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决。迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构。**UML原理图**![在这里插入图片描述](https://img-b原创 2017-10-20 15:09:03 · 13966 阅读 · 0 评论 -
认真学习设计模式之职责链模式((Chain of Responsibility Pattern)
# 【1】概述 职责链模式(Chain of Responsibility Pattern), 又叫责任链模式,为请求创建了一个接收者对象的链。这种模式对请求的发送者和接收者进行解耦。职责链模式通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。这种类型的设计模式属于`行为型`模式。**UML原理图**![在这里插入图片描述](https://img-blog.csdnimg.cn/ba728ad5d06c4275b14f原创 2017-06-28 18:25:48 · 3556 阅读 · 0 评论 -
认真学习设计模式之解释器模式(Interpreter Pattern)
# 【1】概述在编译原理中,一个算术表达式通过词法分析器形成词法单元,而后这些词法单元再通过语法分析器构建语法分析树,最终形成一颗抽象的语法分析树。这里的词法分析器和语法分析器都可以看做是解释器。解释器模式(Interpreter Pattern):是指给定一个语言(表达式),定义它的文法的一种表示,并定义一个解释器,使用该解释器来解释语言中的句子(表达式)。**应用场景*** 应用可以将一个需要解释执行的语言中的句子表示为一个抽象语法树* 一些重复出现的问题可以用一种简单的语言来表达* 一原创 2016-12-23 10:50:46 · 1516 阅读 · 0 评论 -
认真学习设计模式之备忘录模式(Memento Pattern)
认真学习设计模式之备忘录模式(Memento Pattern)31/100发布文章J080624未选择任何文件new# 【1】概述备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。可以这里理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情,以防忘记了。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或原创 2016-11-10 14:41:30 · 519 阅读 · 0 评论 -
认真学习设计模式之中介者模式(Mediator Pattern)
# 【1】概述中介者模式(Mediator Pattern),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式属于`行为型`模式,使代码易于维护。比如MVC 模式,C(Controller 控制器)是M(Model 模型)和V(View 视图)的中介者,在前后端交互时起到了中间人的作用。**UML 类图**![在这里插入图片描述](https://img-blog.csdnimg.cn/e4e6787e1原创 2016-11-09 18:18:01 · 1101 阅读 · 0 评论 -
认真学习设计模式之访问者模式(Visitor Pattern)
# 【1】概述## ① 定义 访问者模式(Visitor Pattern),封装一些作用于某种数据结构的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。**访问者模式的基本工作原理是**:在被访问的类里面加一个对外提供接待访问者的接口。主要将数据结构与数据操作分离,解决数据结构和操作耦合性问题。**访问者模式主要应用场景是**:需要对一个对象结构中的对象进行很多不同操作(这些操作彼此没有关联),同时需要避免让这些操作"污染"这些对象的类,可以选用访问者模式解决。#原创 2017-03-30 11:59:35 · 1783 阅读 · 0 评论 -
认真学习设计模式之享元模式(Flyweight Pattern)
# 【1】概述## ① 介绍**享元模式(Flyweight Pattern) 也叫蝇量模式-- 运用共享技术有效地支持大量细粒度的对象**。常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象中有我们需要的则直接拿来用,避免重新创建,如果没有我们需要的,则创建一个。享元模式能够解决重复对象的内存浪费的问题,当系统中有大量相似对象,需要缓冲池时。不需总是创建新对象,可以从缓冲池里拿。这样可以降低系统内存,同时提高效率。享元模式经典的应用场景就是池技术了原创 2016-12-07 10:29:30 · 1147 阅读 · 0 评论 -
认真学习设计模式之桥接模式(Bridge Pattern)
# 【1】概述 桥接模式(Bridge 模式)是一种结构型设计模式,是指将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。Bridge 模式基于类的`最小设计原则`,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(`Abstraction`)与行为实现(`Implementation`)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。**UML类图**![在这里插入图片描述](https://img-blog.csdnimg.cn/c3bc0原创 2016-12-09 10:16:08 · 931 阅读 · 0 评论 -
认真学习设计模式之建造者模式(Builder Pattern)
# 【1】概述**建造者模式(Builder Pattern) 又叫生成器模式,是一种对象构建模式**。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。**建造者模式的四个角色*** Product(产品角色): 一个具体的产品对象。* Builder(抽象建造者): 创建一个Product 对象的各原创 2016-12-11 16:51:01 · 3342 阅读 · 0 评论 -
认真学习设计模式之原型模式(Prototype Pattern)
# 【1】概述原型模式(Prototype 模式)是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。原型模式是一种`创建型`设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建,即`对象.clone()`。形象的理解:孙大圣拔出猴毛, 变出其它孙大圣## **① UML类图**![在这里插入图片描述](https://img-blog原创 2016-12-09 10:13:06 · 694 阅读 · 0 评论 -
认真学习设计模式之组合模式(Composite Pattern)
【1】概述组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式。组合模式使得用户对单个对象和组合对象的访问具有一致性,即:组合能让客户以一致的方式处理个别对象以及组合对象。① 三大组件Component :这是组合中对象声明接口,在适当情况下,实现所有类共有的接口默认行为,用于访问和管理Component 子部件,原创 2021-11-04 18:47:22 · 369 阅读 · 0 评论 -
Java中静态代理使用与原理详解
相关博文:Java中动态代理使用与原理详解CGLIB动态代理使用与原理详解【1】概述代理模式是为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象代理模式有不同的形式, 主要有三种静态代理、动态代理(JDK 代理、接口代理)和Cglib 代理(可以在内存动态的创建对象,而不需要实现接口, 他是属于动态代理的范畴) 。静态原创 2021-11-04 16:13:31 · 456 阅读 · 0 评论 -
认真学习设计模式之状态模式(State Pattern)
【1】概述状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。这个模式将状态封装成独立的类,并将动作委托到 代表当前状态的对象,我们知道行为会随着内部状态而改变。一个对象“看起来好像修改了它的类”是什么意思呢?从客户的视角来看:如果说你使用的对象能够完全改变它的行为,那么你会觉得,这个对象实际上是从别的类实例化而来的。然而,实际上,你知道我们是在使用组合通过简单引用不同的状态对象来造成类改变的假象。① UML类图Context是一个类,它可以拥有一些内部状态。State接原创 2021-11-03 10:14:38 · 320 阅读 · 0 评论 -
认真学习设计模式之模板方法模式(Template Method Pattern)
【1】概述① 模板方法模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现。那么什么是模板方法呢?我们看下模板方法的定义。一个具体方法而非抽象方法,其用作一个算法的模板;在模板方法中,算法内的大多数步骤都被某个方法代表;模板方法中某些方法是子类处理需要由子类提供的方法,必须在超类中声明为抽象方法;模板方法通常不能被覆盖,也就是使用final修饰;如下实例,prepareRecipe就是一个模板方法。public abstract class CaffeineBeverag原创 2021-11-02 18:02:48 · 279 阅读 · 0 评论 -
认真学习设计模式之适配器模式(Adapter Pattern)/包装器模式
适配器的作用可以简单通过下图得知,OO适配器就是将一个接口转换成另一个接口,以符合客户的期望。实际场景应用可以联想插座适配器,如下图所示。客户使用适配器的过程如下:① 客户通过目标接口调用适配器的方法对适配器发出请求;② 适配器使用被适配者接口把请求转换成被适配者的一个或多个调用接口;③ 客户接受到调用的结果,但并未察觉这一切是适配器在其转换作用。...原创 2021-11-02 14:16:05 · 1730 阅读 · 0 评论 -
八种创建单例模式的方式-懒汉式与饿汉式及枚举
两种创建单例模式的方法与懒汉式线程安全问题的解决原创 2016-09-26 22:29:18 · 1237 阅读 · 0 评论 -
Java中的代理模式与动(静)态代理
代理代理是英文 Proxy 翻译过来的。我们在生活中见到过的代理,大概最常见的就是朋友圈中卖面膜的同学了。她们从厂家拿货,然后在朋友圈中宣传,然后卖给熟人。按理说,顾客可以直接从厂家购买产品,但是现实生活中,很少有这样的销售模式。一般都是厂家委托给代理商进行销售,顾客跟代理商打交道,而不直接与产品实际生产者进行关联。所以,代理就有一种中间人的味道。代理模式代理模式是面向...转载 2017-10-09 13:28:33 · 718 阅读 · 0 评论 -
CGLIB代理使用与原理详解
JDK中提供的生成动态代理类的机制有个鲜明的特点是:某个类必须有实现的接口,而生成的代理类也只能代理某个类接口定义的方法。那么如果一个类没有实现接口怎么办呢?这就有CGLIB的诞生了,前面说的JDK的动态代理的实现方式是实现相关的接口成为接口的实现类,那么我们自然可以想到用继承的方式实现相关的代理类。【1】CGLIB简单实现① pom依赖如下 <!-- https://...原创 2018-08-26 11:26:49 · 5267 阅读 · 1 评论 -
Java中动态代理使用与原理详解
动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时根据需要动态创建目标类的代理对象。动态代理使用场合:调试远程方法调用代理设计模式的原理: 使用一个代理将对象包装起来, 然后用该代理对象取代原始对象. 任何对原始对象的调用都要通过代理. 代理对象决定是否以及何时将方法调用转到原始对象上。【1】Proxy专门完成代理的操作类,是所有动态代理类的父...原创 2018-08-22 15:31:46 · 3613 阅读 · 0 评论 -
Java面向对象设计七大原则
【1】概述① 单一职责原则(Single Responsibility Principle)每一个类应该专注于做一件事情。② 里氏替换原则(Liskov Substitution Principle)超类存在的地方,子类是可以替换的。③ 依赖倒置原则(Dependence Inversion Principle)实现尽量依赖抽象,不依赖具体实现。④ 接口隔离原则(Interface ...原创 2018-12-09 18:29:21 · 1122 阅读 · 0 评论 -
SpringMVC与REST相结合实现RESTful风格
【1】REST简介REST : 即 Representational State Transfer 。(资源)表现层状态转化。资源 : 网络上的一个实体或者说是网络上的一个具体信息。 每种资源对应一个特定的URI,因此URI为每一个资源的独一无二的识别符。状态转化 : 每发出一个请求,就代表了客户端和服务器端的一次交互过程。HTTP协议是一个无状态协议,即所有的状态都保存在服务器上。因此用户想原创 2017-02-20 21:20:40 · 5157 阅读 · 0 评论 -
理解本真的REST架构风格
引子 在移动互联网、云计算迅猛发展的今天,作为一名Web开发者,如果您还没听说过“REST”这个buzzword,显然已经落伍了。夸张点说,甚至“出了门都不好意思跟别人打招呼”。尽管如此,对于REST这个泊来品的理解,大多数人(包括一些资深的架构师)仍然停留在“盲人摸象”的阶段。常常听到各种各样关于REST的说法,例如:有人说:“我们这套新的API决定不用Web Service(SOAP...转载 2017-02-20 20:33:09 · 1460 阅读 · 0 评论 -
认真学习设计模式之装饰者模式(Decorator Pattern)
写在前言利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为。然而如果能够利用组合的做法扩展对象的行为,就可以在运行时动态地进行扩展。通过动态地组合对象,可以写新的代码添加新功能,而无须修改现有代码。既然没有改变现有代码,那么引进bug或产生意外副作用的机会将大幅度减少。上面对应着一条重要的设计原则-“开闭原则”,类应该对扩展开发,对修改关闭。那么有哪些设计模式遵...原创 2019-02-21 13:44:58 · 588 阅读 · 0 评论 -
认真学习设计模式之观察者模式(Observer Pattern)
【1】观察者模式定义于特点① 观察者模式定义观察者模式也叫(发布-订阅模式)定义了对象之间的一对多的依赖,当一个对象(主题)改变状态时,它的所有依赖者都会收到通知并自动更新。在观察者模式中,会改变的是主题的状态,以及观察者的数目和类型。主题与观察者都是用接口,观察者使用主题的接口向主题注册,而主题利用观察者的接口通知观察者。这样可以让两者之间运作正常,又同时具有松耦合的优点–可观察者不知道观...原创 2019-02-16 20:59:14 · 521 阅读 · 0 评论 -
认真学习设计模式之策略模式(Strategy Pattern)
【1】策略模式定义策略模式定义和封装了一系列的算法,它们是可以相互替换的,也就是说它们具有共性,而它们的共性就体现在策略接口的行为上。另外为了达到最后一句话的目的,也就是说让算法独立于使用它的客户而独立变化,我们需要让客户端依赖于策略接口来实现。策略模式特点:是一种行为型模式,对算法封装,使得客户端独立于各个策略扩展性强,添加策略无非就是添加一个具体的实现类而已,代价非常低主要解决:...原创 2019-02-17 20:50:59 · 833 阅读 · 0 评论 -
认真学习设计模式之命令模式(Command Pattern)
【1】命令模式命令模式将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的对象。每一个命令都是一个操作:请求的一方发出请求要求执行一个操作;接收的一方收到请求,并执行操作。命令模式允许请求...原创 2019-03-02 17:49:37 · 930 阅读 · 0 评论 -
认真学习设计模式之工厂模式(Factory Pattern)
工厂模式-工厂方法实例一//接口的应用:工厂方法的设计模式public class TestFactoryMethod { public static void main(String[] args) { IWorkFactory i = new StudentWorkFactory(); i.getWork().doWork(); IWork原创 2016-11-17 17:46:49 · 666 阅读 · 0 评论