/*** 静态代理* 公共接口:* 1、真实角色* 2、代理角色* **/publicclass StaticProxy {publicstaticvoid main(String[] args) {new WeddingCompany(new You()).happyMarry();//new Thread(线程对象).start(); }
}
interface Marry{void happyMarry();
}
//真实角色class You implements Marry{@Overridepublicvoid happyMarry() {System.out.println("you and 嫦娥终于奔月了....");}}
//代理角色class WeddingCompany implement...
代理模式是常用的java设计模式,他的特征是代理类与目标类有同样的接口,代理类主要负责为目标类预处理消息、过滤消息、把消息转发给目标类,以及事后处理消息等。代理类与目标类之间通常会存在关联关系,一个代理类的对象与一个目标类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用目标类的对象的相关方法,来提供特定的服务。 结构图如下: 按照代理的创建时期,代理类可以分为静态代...
最近看书,有两个地方提到了动态代理,一是在Head First中的代理模式,二是Spring AOP中的AOP。所以有必要补充一下动态代理的相关知识。Spring采用JDK动态代理和CGLib动态代理的技术在运行期实现AOP。要使用JDK动态代理,目标类必须实现响应的接口,而CGLib不对目标类做任何限制,它通过动态生成目标子类的方式提供代理。JDK在创建代理对象时性能高于CGLib,而生成的代理对象的性能却比CGLib低,如果是singleton的代理,推荐使用CG...
一、代理模式代理模式是设计模式中的一种结构型模式,在设计模式中算比较好理解的一种模式。具体来说就是使用代理对象来代替对真实对象的访问,当我们需要新增额外功能时,不需要修改目标对象就能达到功能扩展的效果。代理模式的关键点--代理对象与目标对象,代理对象是目标对象的扩展,并会调用目标对象。例子:记得几年前微商很火,小明的高中同学也很多在做微商(听说已经提玛莎拉蒂了!!!),每天朋友圈都被大量的广告刷屏。...
java静态代理代码举例
/**静态代理举例**特点:代理类和被代理类在编译期间就确定下来了**@author 刘鑫*@create by 2021/4/15 22:29*/interface ClothFactory{void produceCloth();
}//代理类
class ProxyClothFactory implements ClothFactory{//代理类持有一个被代理类类的对象引用private ClothFactory factory;//用被代理类进行实例化public ProxyClothFactory(ClothFactory factory){this.factory=factory;}@Overridepublic v...
代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。Java开发中的开闭原则,对扩展开放,对修改关闭,所以当功能不满足需求时,应当避免直接修改源代码,而是应该对其进行扩展创建接口 TargetInte创建目标实现类 TargetInteImpl测试类测试结果代理的作用就是对目标实现类中的方法进行功能增强假设现在目标方法中的功能已经不能满足我们的需求,我们需要在目标方法的原有功能之前增加【输...
目录什么是代理模式定义代理模式的主要角色优点缺点静态代理动态代理JDK原生动态代理例子分析小结CGLIB动态代理例子分析final类型其他方案尾声理解Java动态代理需要对Java的反射机制有一定了解什么是代理模式
在有些情况下,一个客户不能或者不想直接访问另一个对象,这时需要找一个中介帮忙完成某项任务,这个中介就是代理对象。
例如,购买火车票不一定要去火车站买,可以通过 12306 网站或者去火车票代售点买。又如找女朋友、找...
代理
代理是英文 Proxy 翻译过来的。我们在生活中见到过的代理,大概最常见的就是朋友圈中卖面膜的同学了。
她们从厂家拿货,然后在朋友圈中宣传,然后卖给熟人。
按理说,顾客可以直接从厂家购买产品,但是现实生活中,很少有这样的销售模式。一般都是厂家委托给代理商进行销售,顾客跟代理商打交道,而不直接与产品实际生产者进行关联。
所以,代理就有一种中间人的味道。
接下来,我们说说软件中的代理模式。
代理模式
代理模式...
静态代理与动态代理
静态代理
静态代理:特征是代理类和目标对象的类都是在编译期间确定下来,不利于程序的扩展。 同时,每一个代理类只能为一个接口服务,这样一来程序开发中必然产生过多的代理, 最好可以通过一个代理类完成全部的代理功能。
动态代理
动态代理: 使用一个代理将对象包装起来,然后用该代理对象取代院士对象。任何对原始对象的调用都要通过代理,代理对象决定是否以及何时将 方法调用到原始对象上 动态代理是指客...
java中的静态代理
静态代理小故事
有一天,小杰想结婚了,但是小杰懒得自己去布置婚礼现场,这时候,有个人告诉他不用自己置办婚礼也可以结婚,酒店可以代办,小杰异常高兴,觉得这很符合自己当前的需求,所以高高兴兴去酒店找老板定制了自己的婚礼,老板也很快帮小杰办好了婚礼,一切都显得那么和谐!
当你需要一个房子,但是你不好直接找到房主,所以你找到了中介,中介帮你找到了房子,中介就是你的代理话不多说,上代码
packag...
本篇学习的是多线程的静态代理,以结婚为举例,婚庆公司为代理角色,自己为真实角色。
package lesson04;public class StaticProxy {public static void main(String[] args) {new WeddingCompony(new You()).happyMarry();new Thread(()-> System.out.println("111")).start();}
}
interface Marry {void happyMarry ();
}
//真角色:你自己结婚
class You implements Marry {@Overridepublic void happyMarry() {System.out.pri...
动态代理
2020年12月23日
15:39
目录 - - 概述 - 1. 代理模式 - 2. 静态代理案例 - 3. 动态代理 - 3.1 案例 - 3.2 底层原理
概述
理解动态代理首先要理解代理模式,理解代理模式可以以静态代理案例为切入点。
JDK动态代理就是典型的动态代理的实现。
1. 代理模式
代理模式是什么?简单来说,代理模式的目的是不改变代理类的前提下对其做增强。这个类图很吓人,实际上很简单,就是RealSubject实现了Subject,为了对Rea...
静态代理是指,代理类在程序运行前就已经定义好.java源文件,其与目标类的关系在程序运行前就已经确立。在程序运行前代理类已经编译为.class文件。静态代理在idea中创建java工程,工程名称:ch01-staticproxy⒈定义业务接口定义业务接口UsbSell(目标接口),其中含有抽象方法sell(int amount), sell是目标方法。⒉定义接口实现类目标类UsbKingFactory(金士顿u盘),该类实现了业务接口。⒊代理商TaoBaoTaoBao就是一个代理类, 代理厂...
静态代理是指,代理类在程序运行前就已经定义好.java源文件,其与目标类的关系在程序运行前就已经确立。在程序运行前代理类已经编译为.class文件。
静态代理
在idea中创建java工程,
工程名称:ch01-staticproxy
⒈定义业务接口
定义业务接口UsbSell(目标接口),其中含有抽象方法sell(int amount), sell是目标方法。⒉定义接口实现类
目标类UsbKingFactory(金士顿u盘),该类实现了业务接口。⒊代理商TaoBao
TaoBao就是一个代理类,...
学习代理模式之前一定要清楚一个点:什么是代理模式,即代理对象是目标对象的扩展,并且代理对象会调用目标对象。
静态代理模式在使用时,必须定义接口或者父类,并且代理对象与目标对象必须一起实现相同的接口或者继承相同的父类。
在这里,代理对象和目标对象不实现共同的接口或继承相同的父类也同样能够调用目标对象的方法,但是实现了相同的接口或继承相同的父类就能保证代理对象和目标对象有相同的约束,这样才符合代理的意义...