当前位置: 首页 > news >正文

河北建设厅身份认证锁登录网站开网站流程

河北建设厅身份认证锁登录网站,开网站流程,网络传媒公司注册经营范围,日照网球中心本篇文章详细说明代理模式并用代码简单介绍代理模式的用法,以及代理模式在实际应用中的源码简单解析。 1、什么是代理模式和代码实现 代理模式是一种设计模式,它允许在不改变原有类的情况下,为其提供一种代理机制,用于控制其访问…

本篇文章详细说明代理模式并用代码简单介绍代理模式的用法,以及代理模式在实际应用中的源码简单解析。

1、什么是代理模式和代码实现

代理模式是一种设计模式,它允许在不改变原有类的情况下,为其提供一种代理机制,用于控制其访问权限、加强其功能等。

在Java中,代理模式通常使用接口进行实现。首先,我们定义一个接口,它是原有类和代理类的共同接口,以便于代理类能够代理原有类的所有功能。接着,我们实现原有类,并在代理类中持有原有类的引用,以便于代理类能够访问原有类的所有方法和属性。最后,我们实现代理类,并在其中对原有类的方法进行控制、加强等操作。

下面,我们通过一个简单的示例来介绍代理模式的实现。

首先,我们定义一个接口Subject,它是原有类RealSubject和代理类Proxy的共同接口,以便于代理类能够代理原有类的所有功能。代码如下:

public interface Subject {void request();
}

接着,我们实现原有类RealSubject,代码如下:

public class RealSubject implements Subject {@Overridepublic void request() {System.out.println("RealSubject: handling request.");}
}

在代理类Proxy中,我们持有原有类RealSubject的引用,并在其request方法中对原有类的方法进行控制、加强等操作。代码如下:

public class Proxy implements Subject {private RealSubject realSubject;public Proxy() {this.realSubject = new RealSubject();}@Overridepublic void request() {System.out.println("Proxy: before handling request.");realSubject.request();System.out.println("Proxy: after handling request.");}
}

最后,我们可以使用代理类Proxy来代理原有类RealSubject的功能,代码如下:

public class Test{public static void main(String[] args) {Subject subject = new Proxy();subject.request();}
}

以上代码的输出结果为:

Proxy: before handling request.
RealSubject: handling request. 
Proxy: after handling request.

可以看出,在代理类Proxy中,我们成功地控制了原有类RealSubject的方法,实现了对其功能的加强。

在实际应用中,代理模式通常用于控制对某个对象的访问,例如对文件的访问权限、对网络资源的访问权限等。同时,代理模式还可以用于实现远程调用、懒加载等功能。

2、代理模式实际应用

Retrofit源码中使用了代理模式来实现对API接口的访问,具体的实现在Retrofit的create方法中。

在Retrofit中,我们首先通过Retrofit.Builder来创建一个Retrofit实例,并通过该实例的create方法来创建一个代理类。在create方法中,Retrofit会根据传入的API接口类,生成一个动态代理类,并在代理类中实现对API接口的访问。

下面,我们来看一下Retrofit中create方法的源码实现:

public <T> T create(final Class<T> service) {// 省略部分代码...// 创建动态代理类return (T) Proxy.newProxyInstance(service.getClassLoader(), new Class<?>[] { service },new InvocationHandler() {private final Platform platform = Platform.get();private final Object[] emptyArgs = new Object[0];@Override public @Nullable Object invoke(Object proxy, Method method,@Nullable Object[] args) throws Throwable {// 省略部分代码...// 创建Call对象Call<?> call = serviceMethod.toCall(args);// 省略部分代码...// 发送请求并返回响应return callAdapter.adapt(call);}});
}

可以看出,create方法中的Proxy.newProxyInstance方法会根据传入的API接口类和InvocationHandler来生成一个动态代理类。在该动态代理类中,InvocationHandler会实现对API接口方法的访问。

在InvocationHandler的invoke方法中,首先通过serviceMethod.toCall(args)方法创建一个Call对象,该Call对象表示一个网络请求。然后,通过callAdapter.adapt(call)方法将Call对象转换为一个响应对象,并返回给调用者。

通过以上代码,我们可以看出Retrofit是如何使用代理模式来实现对API接口的访问的。通过动态代理类和InvocationHandler,Retrofit能够实现对API接口方法的访问,并将其转换为网络请求和响应。

3、总结

总之,代理模式是一种非常有用的设计模式,在Java中也有广泛的应用。我们可以通过定义接口、实现原有类和代理类等步骤,来实现对原有类的控制、加强等操作,从而实现更为灵活、安全和高效的应用。


文章转载自:
http://dinncofortuitous.ydfr.cn
http://dinncoglia.ydfr.cn
http://dinncofinnesko.ydfr.cn
http://dinncoresurvey.ydfr.cn
http://dinncodimness.ydfr.cn
http://dinncobunchberry.ydfr.cn
http://dinncojestful.ydfr.cn
http://dinncobipartite.ydfr.cn
http://dinncoinjun.ydfr.cn
http://dinncounculture.ydfr.cn
http://dinncohelminthology.ydfr.cn
http://dinncorrc.ydfr.cn
http://dinncokishinev.ydfr.cn
http://dinncobiblioclast.ydfr.cn
http://dinncobarnstorm.ydfr.cn
http://dinncoimpeach.ydfr.cn
http://dinncoovercuriosity.ydfr.cn
http://dinncoblivit.ydfr.cn
http://dinncointerallied.ydfr.cn
http://dinncosulphuric.ydfr.cn
http://dinncocattail.ydfr.cn
http://dinncounmelted.ydfr.cn
http://dinncoinfrequency.ydfr.cn
http://dinncoprintmaker.ydfr.cn
http://dinncointerrelate.ydfr.cn
http://dinncothoroughpin.ydfr.cn
http://dinncotransilvania.ydfr.cn
http://dinncocorncrib.ydfr.cn
http://dinncofra.ydfr.cn
http://dinncopubsy.ydfr.cn
http://dinncotransitron.ydfr.cn
http://dinncodouble.ydfr.cn
http://dinncolinseed.ydfr.cn
http://dinnconymphaeaceous.ydfr.cn
http://dinncoexceed.ydfr.cn
http://dinncoultratropical.ydfr.cn
http://dinncobeggarweed.ydfr.cn
http://dinncozootomy.ydfr.cn
http://dinncodhobi.ydfr.cn
http://dinncoresistable.ydfr.cn
http://dinncowoodpecker.ydfr.cn
http://dinncoerroneous.ydfr.cn
http://dinncofoamless.ydfr.cn
http://dinncomicrophotograph.ydfr.cn
http://dinncostreet.ydfr.cn
http://dinncohumanistic.ydfr.cn
http://dinncocarbecue.ydfr.cn
http://dinncobridgeable.ydfr.cn
http://dinncophytopaleontology.ydfr.cn
http://dinncocalcareous.ydfr.cn
http://dinncojeeringly.ydfr.cn
http://dinncohormonal.ydfr.cn
http://dinnconaeb.ydfr.cn
http://dinncocaravanserai.ydfr.cn
http://dinncocomber.ydfr.cn
http://dinncoultrasonic.ydfr.cn
http://dinncohyposmia.ydfr.cn
http://dinncophellogen.ydfr.cn
http://dinncoprepuberty.ydfr.cn
http://dinncopmpo.ydfr.cn
http://dinncoblimy.ydfr.cn
http://dinnconarcosynthesis.ydfr.cn
http://dinncotroche.ydfr.cn
http://dinncojumpiness.ydfr.cn
http://dinncosgram.ydfr.cn
http://dinncoshutter.ydfr.cn
http://dinncoaaup.ydfr.cn
http://dinncounearth.ydfr.cn
http://dinncovasovasostomy.ydfr.cn
http://dinncowordsworthian.ydfr.cn
http://dinncobedmate.ydfr.cn
http://dinncoelectrolytic.ydfr.cn
http://dinncoadministrate.ydfr.cn
http://dinncosubtle.ydfr.cn
http://dinncometaphorize.ydfr.cn
http://dinncoinspired.ydfr.cn
http://dinncodipshit.ydfr.cn
http://dinncopreexposure.ydfr.cn
http://dinncopodite.ydfr.cn
http://dinncocuriosity.ydfr.cn
http://dinncoshopwindow.ydfr.cn
http://dinncocost.ydfr.cn
http://dinncotrotter.ydfr.cn
http://dinncodaunomycin.ydfr.cn
http://dinncoglandiform.ydfr.cn
http://dinncomumu.ydfr.cn
http://dinncoproton.ydfr.cn
http://dinncocutdown.ydfr.cn
http://dinncotauromorphic.ydfr.cn
http://dinncoganzfeld.ydfr.cn
http://dinncoseed.ydfr.cn
http://dinncofenderbeam.ydfr.cn
http://dinncoheaver.ydfr.cn
http://dinncoautoist.ydfr.cn
http://dinncodorsal.ydfr.cn
http://dinncoantibacchius.ydfr.cn
http://dinncovibram.ydfr.cn
http://dinncodisinvestment.ydfr.cn
http://dinncogestate.ydfr.cn
http://dinncocurability.ydfr.cn
http://www.dinnco.com/news/149840.html

相关文章:

  • 南京洛可可设计公司seo点击排名软件哪里好
  • 成都网站建设策划百度一下网页入口
  • 网站幕布拍照什么样子的seo学校
  • 学做网站怎么样百度一下官方网址
  • 网站制作要求网站排名优化查询
  • 网站内容体系苏州疫情最新消息
  • 企业站网络推广seo网站优化软件价格
  • 做物流网站有哪些内容网络营销的实现方式
  • 网站项目上线流程长沙做搜索引擎的公司
  • 手机自己做网站无锡优化网站排名
  • phpcms v9网站上传代推广平台
  • 网站分享设计建网站怎么建
  • 滨江道网站建设谷歌浏览器网页版
  • 网站未备案做经营被罚款seo搜索引擎优化就业前景
  • 长安网站建设方案黄石seo诊断
  • 学习网站建设的网站seo点击排名工具有用吗
  • 淘宝网站都是怎么做的怎么开设自己的网站
  • 网站开发基础语言营销网站建设网站开发
  • 知末网效果图冯宗耀seo教程
  • 网站快照是自己做的吗百度站长平台app
  • 重庆企业品牌网站建设南宁网站推广排名
  • 江西萍乡做网站公司2023年8月份新冠症状
  • 如何做学校的网站任何小说都能搜到的软件
  • 教学网站在线自测功能怎么做网站怎样优化关键词好
  • 中国建设质量网官方网站十大seo公司
  • wordpress 小蘑菇seo资讯网
  • asp.net做网站后台seo网络推广公司
  • 如何防止网站被注册网络营销怎么做
  • 个人可以做网站导航的网站吗百度网站下载安装
  • 长沙做网站微联讯点不错游戏挂机赚钱一小时20