今天学习了代理模式. 相对于适配器模式,或者说装饰器模式,代理模式理解起来更加简单. 代理这个词应该比較好理解,取代去做就是代理. 比方,我们买卖房子,那么我们会找中介,我要卖房子,可是我们没有时间去卖,我主动交给中介,中介会帮我公布,会帮我找买家,带买家看房,最后我仅仅要收到钱即可了. 买家的目的:卖房拿钱..卖加终于的目的就是把房子换成钱. 中介的工作:收集房产信息,公布房产信息,等买家打电话来,带买家看房,买家看中了,付钱给中介,中介办理过户手续,过户成功,抽掉自己的佣金,付钱给卖家. 卖…
-本想着这个知识点放到Spring Aop说说可能更合适一点,但因为上一篇有所提到就简单分析下,不足之处请多多评论留言,相互学习,有所提高才是关键! 什么是代理模式: 记得有本24种设计模式的书讲到代理模式的经典例子,说的是西门庆.王婆.潘金莲的故事,比如西门庆找潘金莲,不好意思啊,则么办,找那个王婆做代理, 代理模式就是找个东西代替自己完成自己的活,这个就称之为代理.如宋哲经纪人,找房子中介......具体看看代码怎么写 区别 JDK动态代理只能对实现了接口的类生成代理,而不能针对类 CGLI…
设计模式之代理模式 一.概述 1.什么是代理模式? 解释第一遍:代理模式主要由三个元素共同构成: 1)一个接口,接口中的方法是要真正去实现的. 2)被代理类,实现上述接口,这是真正去执行接口中方法的类. 3)代理类,同样实现上述接口,同时封装被代理类对象,帮助被代理类去实现方法. 解释第二遍:  使用代理模式必须要让代理类和目标类实现相同的接口,客户端通过代理类来调用目标方法,代理类会将所有的方法调用分派到目标对象上反射执行,还可以在分派过程中添加"前置通知"和后置处理 (如在调用目标…
一.场景描述 代理在生活中并不少见,租房子需要找中介,打官司需要找律师,很多事情我们需要找专业人士代理我们做,另一方面,中介和律师也代理了房东.法律程序与我们打交道. 当然,设计模式中的代理与广义的代理还是有所差别的:A对象调用B对象提供的服务X时,使用代理模式的前提是B对象实现了IB接口,通过接口IB公布其可被代理的方法:好比铁路总公司有N多服务,其售票服务可被第三方售票商家代理,其订餐服务可被另外一些第三方商家代理,第三方商家要代理铁总的服务的前提是铁总开放这些服务:在设计模式实现中则体现为…
一,定义:  代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问. 二,其类图: 三,分类一:静态代理 1,介绍:也就是需要我们为目标对象编写一个代理对象,在编译期就生成了这个代理对象,然后通过访问这个代理,来实现目标对象某些功能. 2,简单应用:在这里我们看一个简单的登录登出的例子: 登录功能的接口: [java] view plaincopyprint? /** * 公共接口,目标对象和代理都来实现 */ public interface ILogin{ //登录 void…
1.什么是代理模式 Provide a surrogate or placeholder for another object to control access to it. Proxy Pattern:为其他对象提供一种代理以控制对这个对象的访问. 说人话:在不改变原始类(或叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能,比如Spring AOP. 2.代理模式定义 ①.Subject 抽象主题角色,可以是抽象类,可以是接口,是一个最普通的业务类定义,无特殊要求. ②.RealS…
桥接模式,初学的时候事实上非常不理解为什么要把这个模式命名为桥接模式,脑海里突然联想到.事实上我学习是一件比較痛苦的事情,由于我必需要知道来龙去脉才干学的进去,所以,非常快我就对这个命名产生了兴趣,桥接? 嗯,桥接!先把桥字换成连字,连接?桥接?桥接和连接最大的不同是桥接是降具有同样模式的两种事物连接起来,这是我依据词典的解释得出的. 好吧,具有同样模式,瞬间便想到了接口,是不是有职业病? 将抽象部分与实现部分分离,使它们都能够独立的变化.                            …
外观模式是一种比較easy理解的模式,作用非常easy.就是解耦合. 结构也是非常easy,一个外观类.这个外观类持有非常多的业务类. 再由客户类去调用这个外观类去实现一些列的业务操作... 这个模式在我们的工作中很常见,一般来说.我们的项目都是分成了Action(conlller)层.service层,dao层. . dao层负责与数据库交互,service层负责调用dao层的数据库操作,一般来说一张表相应一个dao.在一个serice层代码中,能够不止有单独的对某一张表.所以可能调用多个da…
(七)装饰 Decorator 装饰是一个对象,以动态地增加一些新功能. 象与被装饰的对象须要实现同一个接口.装饰对象持有被装饰对象的实例. interface DecoratorSourceable{ public void method(); } //被装饰类 class DecoratorSource implements DecoratorSourceable{ public void method(){ System.out.println("Source"); } } //…
设计模式之第16章-代理模式(Java实现) “现在朋友圈真是太让人蛋疼了啊.”“怎么说?”“一堆代理,各种卖东西的,看着好烦人.”“哎,删了呗.”“都是朋友,哪里好意思删啊.”“这倒也是...哎,迫于生计,没办法咯.还好我不玩.”“对了,你不就是代理的鼻祖么,身为代理模式,你作何感想.”“以代理之道还治代理之身啊.” 代理模式之自我介绍 最近出场率超级高,哦不,一直以来出场率都挺高的说的大名鼎鼎的模式,就是我-代理模式是也.有关我的定义如下:Provide a surrogate or pla…
原创文章,同步发自作者个人博客,转载请注明出处 http://www.jasongj.com/design_pattern/abstract_factory/ 抽象工厂模式解决的问题 上文<工厂方法模式>中提到,在工厂方法模式中一种工厂只能创建一种具体产品.而在抽象工厂模式中一种具体工厂可以创建多个种类的具体产品. 抽象工厂模式 抽象工厂模式介绍 抽象工厂模式(Factory Method Pattern)中,抽象工厂提供一系列创建多个抽象产品的接口,而具体的工厂负责实现具体的产品实例.抽象工…
原创文章,同步发自作者个人博客,http://www.jasongj.com/design_pattern/strategy/ 策略模式介绍 策略模式定义 策略模式(Strategy Pattern),将各种算法封装到具体的类中,作为一个抽象策略类的子类,使得它们可以互换.客户端可以自行决定使用哪种算法. 策略模式类图 策略模式类图如下 策略模式角色划分 Strategy 策略接口或者(抽象策略类),定义策略执行接口 ConcreteStrategy 具体策略类 Context 上下文类,持有具…
本文介绍了工厂方法模式的概念,优缺点,实现方式,UML类图,并介绍了工厂方法(未)遵循的OOP原则 原创文章.同步自作者个人博客 http://www.jasongj.com/design_pattern/factory_method/ 工厂方法模式解决的问题 上文<简单工厂模式不简单>中提到,简单工厂模式有如下缺点,而工厂方法模式可以解决这些问题 由于工厂类集中了所有实例的创建逻辑,这就直接导致一旦这个工厂出了问题,所有的客户端都会受到牵连. 由于简单工厂模式的产品是基于一个共同的抽象类或者…
摘要:本文介绍了简单工厂模式的概念,优缺点,实现方式,以及结合Annotation和反射的改良方案(让简单工厂模式不简单).同时介绍了简单工厂模式(未)遵循的OOP原则.最后给出了简单工厂模式在JDBC中的应用 原创文章.同步自作者个人博客http://www.jasongj.com/design_pattern/simple_factory 简单工厂模式使用案例 有一种抽象产品--汽车(Car),同时有多种具体的子类产品,如BenzCar,BMWCar,LandRoverCar.类图如下 作为…
原创文章,同步发自作者个人博客 http://www.jasongj.com/design_pattern/flyweight/.转载请注明出处 享元模式介绍 享元模式适用场景 面向对象技术可以很好的解决一些灵活性或可扩展性问题,但在很多情况下需要在系统中增加类和对象的个数.当对象数量太多时,将导致对象创建及垃圾回收的代价过高,造成性能下降等问题.享元模式通过共享相同或者相似的细粒度对象解决了这一类问题. 享元模式定义 享元模式(Flyweight Pattern),又称轻量级模式(这也是其英文…
Chain of Responsibility定义:Chain of Responsibility(CoR) 是用一系列类(classes)试图处理一个请求request,这些类之间是一个松散的耦合,唯一共同点是在他们之间传递request.也就是说,来了一个请求,A类先处理,如果没有处理,就传递到B类处理,如果没有处理,就传递到C类处理,就这样象一个链条(chain)一样传递下去. 如何使用责任链模式 虽然这一段是如何使用CoR,但是也是演示什么是CoR. 有一个Handler接口: publ…
Java 设计模式系列(二三)访问者模式(Vistor) 访问者模式是对象的行为模式.访问者模式的目的是封装一些施加于某种数据结构元素之上的操作.一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变. 一.访问者模式结构 访问者模式适用于数据结构相对未定的系统,它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由地演化. 数据结构的每一个节点都可以接受一个访问者的调用,此节点向访问者对象传入节点对象,而访问者对象则反过来执行节点对象的操作.这样的过程叫做"双重分派…
Java 设计模式系列(十)外观模式 门面模式(Facade):外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.门面模式又称为外观模式,它是一种对象结构型模式. 一.外观模式结构 门面(Facade)角色 :客户端可以调用这个角色的方法.此角色知晓相关的(一个或者多个)子系统的功能和责任.在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统去. 子系统(SubSystem)角…
Java 设计模式系列(九)组合模式 将对象组合成树形结构以表示"部分-整体"的层次结构.组合模式使得用户对单个对象的使用具有一致性. 一.组合模式结构 Component: 抽象的组件对象,为组合中的对象声明接口,让客户端可以通过这个接口来访问和管理整个对象结构,可以在里面为定义的功能提供缺省的实现. Leaf: 叶子节点对象,定义和实现叶子对象的行为,不再包含其它的子节点对象. Composite: 组合对象,通常会存储子组件,定义包含子组件的那些组件的行为,并实现在组件接口中定义…
设计模式系列文章 java设计模式解析(1) Observer观察者模式 java设计模式解析(2) Proxy代理模式 java设计模式解析(3) Factory工厂模式 java设计模式解析(4) Singleton单例模式 java设计模式解析(5) Delegate委派模式 java设计模式解析(6) Strategy策略模式 java设计模式解析(7) Prototype原型模式 java设计模式解析(8) Template模版模式 java设计模式解析(9) Decorator装饰模…
摘要:在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之间增加一层中间层,让代理对象来代替目标对象打点一切.这就是本文要说的Proxy模式. 主要内容 1.例说Proxy模式 2.Proxy模式效果及实现要点 …… 概述 在软件系统中,有些对象有时候由于跨越网络或者其他的障碍,而不能够或者不想直接访问另一个对象,如果直接访问会给系统带来不必要的复杂性,这时候可以在客户程序和目标对象之…
1. 图解 上图主要描述了Cglib动态代理的主要执行过程,下面做详细分析,以下源码使用的Cglib版本为3.2.12. 2. Enhancer源码分析 public Object create() { // 判断是否需要创建对象,false表示需要创建对象 classOnly = false; // 使用的是无参构造函数,参数为null argumentTypes = null; // 创建动态代理class的方法 return createHelper(); } ...//此处省略 priv…
文章由浅入深,先用简单例子说明建造者,然后分析模式的优缺点,最后结合优秀开源框架Mybatis,说明该模式的用处. 1.先定义一个机器人模型 package com.jstao.model; public class Robot { private String head; private String body; private String hand; private String foot; public String getHead() { return head; } public v…
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4261285.html 结构模式 结构模式描述如何将类或者对象结合在一起形成更大的结构.可以分为类的结构模式与对象的结构模式两种. 类的结构模式:使用继承来把类.接口组合在一起,以形成更大的结构.…
一.场景描述 接<Java设计模式(一)工厂模式>https://www.cnblogs.com/mahongbiao/p/8618970.html 工厂模式有一缺点,就是破坏了类的封闭性原则.例如,如果需要增加Word文件的数据采集,此时按以下步骤操作: 创建Word文件数据采集类,实现仪器数据采集接口: 修改仪器数据采集工厂类,增加Word文件数据采集类的工厂方法: 调用工厂类的word文件方法: 步骤2修改了工厂类,如果每增加一实现类都需要修改工厂类,那么这样就不合理了. 解决办法是使用…
设计模式 设计模式是前人总结的,为了解决一类问题而总结的代码设计经验. 最初可能为了使用而使用,后面就会发现.非常多没想到的问题由于使用了正确的设计模式已经为你考虑到了.<design patterns设计模式>这本书是程序猿进阶必学. (一)工厂模式   工厂模式的意义在于定义一个用于创建对象的接口,并控制返回哪个类的实例.网上比較流行的一个普通工厂模式的样例. interface Sender{ public void send(); } class MainSender implemen…
一.概述 动态地给一个对象添加一些额外的职责.就增加功能来说, Decorator模式相比生成子类更为灵活.该模式以对客 户端透明的方式扩展对象的功能. UML简图 角色 在持有Component的引用后,由于其自身也是Component的子类,那么,相当于ConcreteDecorator包裹了Component,不但有Component的特性,同时自身也可以有别的特性,也就是所谓的装饰. 二.实践 根据上面的角色,创建相应的角色 抽象构件 /** * 抽象组件 * * @author Adm…
策略设计模式是Java API库中常见的模式之一.这与另一个设计模式(称为状态设计模式)非常相似.本文是在学习完优锐课JAVA架构VIP课程—[框架源码专题]中<学习源码中的优秀设计模式>后写下的学习感悟.简要介绍了该思想,并提供了有关如何在Java中实现该思想的示例. 深入探索Java设计模式(一)之单例模式 总览 策略模式也称为策略模式.它被归类为行为软件设计模式,其中重点是在对象之间找到灵活的通信模式.它有助于在运行时对象之间建立灵活的通信. 策略模式 策略模式的基本思想是在类的较小层次…
策略模式 一.概念 1.理解策略模式 策略模式是一种行为型模式,它将对象和行为分开,将行为定义为 一个行为接口 和 具体行为的实现.策略模式最大的特点是行为的变化,行为之间可以相互替换. 每个if判断都可以理解为就是一个策略. 2.策略模式特点 策略模式把对象本身和行为区分开来,因此我们整个模式也分为三个部分. 1.抽象策略类(Strategy):策略的抽象,行为方式的抽象 2.具体策略类(ConcreteStrategy):具体的策略实现,每一种行为方式的具体实现. 3.环境类(Context…
1.什么是工厂模式 Define an interface for creating an object,but let subclasses decide which class toinstantiate.Factory Method lets a class defer instantiation to subclasses. 定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行. 说人话:提供创建对象的接口,将创建对象的过程屏蔽,从而达到灵活的目…