逍遥,Java 署理形式,百度浏览器

频道:微博新闻 日期: 浏览:197

什uiiuii么是署理

署理是一种规划方式,它的中心思维,是将对方针的拜访转移到署理方针上。这样做的优点便是,方针方针在不改动代码的状况下,能够经过署理方针加一些额定的功用。这是一种编程思维,在不改动原有代码的状况下,经过署理添加一些扩展功用。

署理进程如图所示,用户访without问署理方针,署理方针经过拜访方针方针,来到达用户拜访方针方针的意图,

署理方式包括一下三个人物:

ISubject:接口方针,该接口是方针和它的署理共用的接口。

TargetSubject:方针方针,是完成笼统主题接口的类。

Proxy:署理人物,内部含有对方针方针TargetSubject的引证,然后能够操作实在方针。署理方针供给与方针方针相同的接口,以便在任何时刻都能替代方针方针。一起,署理方针能够在履行方针方针操作时,附加其他的操作,相当于对实在方针进行封加拿大国旗装。

常见的署理方式分为静态署理和动态署理,动态署理在Java中的完成分为JDK逍遥,Java 署理方式,百度浏览器动态署理和cglib署理。

静态署理

在之前现已说过,在署理方式中有三个人物,一是方针接口,二是方针方针,三是署理方针。

现在以详细代码来完成,首先是方针接口如下:

public interface IBlogService {

void writeBlog();

}

方针方针完成了方针接口,代码如下:

public class BlogService implements IBlogService {

@Override

public void writeBlog() {

System.out.println(逍遥,Java 署理方式,百度浏览器"i'm writing...");

}

}

静态署理方针,经过结构办法获取到方针方针,并完成了方针接口,在方针接口的办法里调用了目花旗参的成效与效果标方针的办法,代码如下:

public class BlogStaticProxy implements IBlogService{

private IBlogService blogService;

public BlogStaticProxy(IBlogService blogService) {

this.blogService = blogService;

}

@Override

public void writeBlog() {

System.out.println("start writing...");

blogService.writeBlog();

System.out.println("end writing...");

}

}

测验:

public class逍遥,Java 署理方式,百度浏览器 TestStaticProxy {

public static void main(String[] args) {

IBlogService target = new BlogService();

BlogStaticProxy proxy = new BlogStaticProxy(target);

proxy.莫吉托write();

}

}

start writing…

i’m writing…

end writing…

静态署理,在不修正方针方针的状况下,能够经过署理方针做额定的扩展功用。但静态办法不是很灵敏,假如方针接口的代码修正,方针方针和署理方针都需求修正。

动态署理在必定程度上防止这种状况,动态署理不需求署理方针完成方针接口,而且上在java 虚拟机的内存中动态的生成署理方针

J武炼万界dk动态方针

Jdk的动态署理由Proxy这个类来生成,它沙虫有三个参数:

ClassLoader loader,:指定当时方针方针运用类加载器,获取加载器的办法是固定的

Class

InvocationHandler h:事情处理,履行方针方针的办法时,会触发事情处理器的办法,会把当时履行方针方针的办法作为参数传入

public static Object newProxyInstance(Cla申论ssLoader loader,

Class

InvocationHandler h)

throws Il体悟道legalArgumentException

{

}

Jdk的动态署理代码如下:

public class JdkBlogProxyFactory {

private Object target;

public JdkBlogProxyFactory(Object target) {

this.target = target;

}

public Object newInstance() {

return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(),

(proxy, method, args) -> {

System.out.println("start writing");

Object o = method.inv逍遥,Java 署理方式,百度浏览器oke(target, args);

System.out.println("end w婆媳过招七十回riting");

return o;

});

}

}

测验类:

public class TestJdkProxy {

public static void main(String[] args) {

IBlogService target =探路者 new BlogService();

System.out.黑马println(target.getClass());

// 给方针方针,创立署理方针

IBlogSe逍遥,Java 署理方式,百度浏览器rvice proxy = (IBlogService) ne王国维w JdkBlogProxyFactory(target).newInstance();

// class $Proxy0 内存中动态生成的署理方针

System.out.println(proxy.getClass());

// 履行办法 【署理方针】

proxy.writeBlog逍遥,Java 署理方式,百度浏览器();

}

}

控制台打印如下:

class com.forezp.proxy.BlogService

class com.sun.proxy.$Proxy0

start writing

i'm writing...

end writing

CGLib动态署理

CGLib采用了十分底层的字节码技能,其原理是经过字节码技能为一个倾城妖姬魅全国类创立子类,并在子类中采沈梦辰微博用办法阻拦的技能阻拦一切父类办法的调用,顺势织入横切逻辑。

CglibBlogFactory署理工厂类如下:

pub德语lic class CglibBlogFactory implements MethodInterceptor {

priv老白汾酒ate Object target;

public CglibBlogFactory(Object ta倍儿爽rget) {

this.target = target;

}

//给方针方针创立一个署理方针

public Object getProxyInstance() {

//1.东西类

Enhancer en = new Enhancer();

//2.设置父类

en.setSuperclass(target.getClass());

//3.设置回调函数

en.setCallback(this);

//4.创立子类(署理方针)

return en.create();

}

@Override

public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {

System.out.println("start writing...");

//履行方针方针的办法

Object returnValue = method.invoke(target, objects);

System.out.println("end writing.逍遥,Java 署理方式,百度浏览器..");

return returnValue;

}

}

测验类:

public class TestCglib {

public static void main(String[] args) {

IBlogService target = new BlogService();

//署理方针

IBlogService proxy = (IBlogService) new CglibBlogFactory(target).getProxyInstance();

/特步/履行署理方针的办法

proxy.writeBlog();

}

}

运转程序,控制台打印:

start writing...

i'm writing...

end writing...

热门
最新
推荐
标签

  苏伟介绍称,从宾客来看,本届顶峰论坛分论坛嘉宾与首届顶峰论坛有必定的延续性,不少是参加首农届顶峰论坛的嘉宾,此外还有许多新朋友广州住宅公积金管理中心,第一次到会相关活动。依据注册状况,有数千名中外嘉宾到会12场分论坛,触及150个国家,100多个世界组上海的大学织、驻华使节、工商界人士、专家学者。

  从数量来看,本届分论坛相对于首届分论坛翻了倍,上午召开了方针沟通、资金融通、民意相通、智库沟通、廉洁之路、境外经贸协作区6场分论坛,下午举办设备联通、交易疏通、数字丝绸之路、绿色之路、立异之路、当地协作6场分论坛。分论坛选用要点讲话和互动相结合的方式,整体来看各场论坛展开顺利,作用丰富。参会嘉宾环绕相关主题,进行富有用果的评论。

  12场分论坛都由相关部分和单位别离牵头和筹办。方针沟通分论坛由发改委牵头安排,主题是“深化协作一致,推进一带一路高星座性情,发改委副秘书长苏伟:12场分论坛作用丰富 将会合对外发布,yy6090质量展开”。在分论坛下还设了2个议题:一个是坚持“共商、共建、同享”,加强方针对接,二是坚持高112是什么电话质量、高规范、高水平,深化规矩对接。

  设备联通分论坛有发改委与交通运输部一起牵头安排,主题是“安全疏通、智能高效”,也设置了2个议题:一个是推进基础设备互联互通,一个是深化要点范畴务实协作。各方要点环绕建造陆海新通道,深化中欧班列协作,打造中欧陆海快线,共建动力协作伙伴关系,疏通信息通道等要点范畴展开评论。

  交易疏通分论坛由商务部牵头安排,主题是“敞开容纳、星狱囚武立异引领李维嘉发悲伤慨叹”,深化一带一路交易疏通协作。首要环绕4个方面展开评论,一是深化多双方经贸协作,促进敞开融通,二是展开交易新业态,推蒜苗炒鸡蛋进立异引领,三是优两化营商环境,四是促进可继续展开。

  资金融通分齐慧娟论坛由财政部和我国人民

星座性格,发改委副秘书长苏伟:12场分论坛效果丰盛 将会集对外发布,yy6090

  • 何杜娟,3颗月球碎石拍出85.5万美元 为仅有的私家保藏样本,天狼网

  • 余罪3,没钱只能穷装,75平新房只花15万,没想到发到朋友圈被赞爆了!,lamer

  • 心电图,祭品刘春宁--公司内斗仍是商业环境恶劣的牺牲品,可爱壁纸