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

中华住房和城乡建设厅网站天津网站优化怎么样

中华住房和城乡建设厅网站,天津网站优化怎么样,列表怎么做网站,企业网站推广方案范文前言 在学习 动态代理知识之前,可以先了解 反射 反射的复习-CSDN博客 场景 我们知道,一些大明星开演出会,要收门票,准备场景啥的。但很显然 明星,他们主要还是 唱歌,跳舞,和粉丝互动。那么 其…

前言

在学习 动态代理知识之前,可以先了解 反射

反射的复习-CSDN博客


场景

我们知道,一些大明星开演出会,要收门票,准备场景啥的。但很显然 明星,他们主要还是 唱歌,跳舞,和粉丝互动。那么 其他事应该是 他们的经纪人或者第三方公司承担。

发现

如果没有代理:

大明星-准备场地,收门票--唱歌,跳舞

如果有代理:

代理--在唱歌,跳舞这一环节中准备场地,收门票--通知大明星-- 唱歌,跳舞

通过对比可以发现,使用代理 (充当经纪人,帮手.....) 可以为大明星他们节省更多的时间准备 演唱会,提高演唱会的质量。


程序为什么 要代理,代理长什么样?

通过浏览上面的场景,发现不是所有的事,都需要自己去承担,去做的,可以通过代理转移部分职责

  • 就好比 一个程序,被它的开发者,赋予过多的职能,会显得特别臃肿,或者看着不协调。这时候需要想着是否可以通过代理把不需要的,转嫁给其他人。也就是代理这个程序 ,承担部分不影响主功能的能力。

中介如何知道要派唱歌,跳舞方法的代理?

使用接口 ,接口中有 唱歌,跳舞抽象方法

  • 通过浏览上面的场景,发现如果要代理,需要 唱歌,跳舞方法。那么如何去获取呢?- 定义一个 明星接口,有 唱歌,跳舞抽象方法
  • 根据上图的场景,虽然 明星的经纪人不参与 唱歌,跳舞 ,但仍然掌握明星他们唱歌跳舞的全过程。明星只负责唱歌,跳舞,其他事由他们的经纪人处理。
  • 因此当有人邀请明星唱歌,明星会要求他们的经纪人去处理,处理好了之后,明星再去唱歌,跳舞啥的。因此在代码中,如果 有一个明星类 ,类中有唱歌,跳舞两个方法。同时 还有一个代理类,想要代理 明星类的方法,那么需要写一个接口,有 唱歌,跳舞抽象方法。代理类通过 实现 接口,来重写 唱歌跳舞方法

动态代理的步骤

1 目标类实现 和它 具有相同方法的接口

2 创建代理类,类中创建代理对象方法

3 具体使用反射 reflect 包下的  调用 Proxy.newProxyInstance 方法 ,创建对象

4 在newProxyInstance 方法 中 调用 involve方法 完成 对目标类主干内容的补充,并适当时候调用目标类和接口具有相同的方法

5 测试类 一般写 目标类对象,作为参数 传递给 创建代理对象方法

发现:代理类,真正代理的是 接口,作为接口的实现类 重写和目标类相同的方法,具体操作上 是补充 目标类方法的内容,同时 调用目标类方法。

demo(案例)

目的:本案例,使用代理 是操作,在接口和目标类相同sing,dance方法,通过 代理分担目标类的任务,实现间接操作目标类的效果

BigStar 类,Star 接口


Proxy 代理类

创建代理对象方法 代码

package fs;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;public class Proxy {public static Star createProxy(BigStar star){/*ClassLoader loader,Class<?>[] interfaces,InvocationHandler h参数1 用于指定一个代理类,代理类必须实现接口,所以参数2指定代理类必须实现的接口参数3 指定代理类必须实现的接口*/Star starProxy= (Star) java.lang.reflect.Proxy.newProxyInstance(Proxy.class.getClassLoader(), new Class[]{Star.class}, new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {// 代理对象要做的事情if (method.getName().equals("sing")){System.out.println("准备话筒,收钱20万");}else if (method.getName().equals("dance")){System.out.println("准备场地,收钱200万");}return method.invoke(star,args);}});return starProxy;}
}

newProxyInstance方法的参数

 参数1 用于指定一个代理类,代理类必须实现接口,所以
 参数2指定代理类必须实现的接口
 参数3 指定代理类必须实现的接口


Test 测试类

package fs;public class Test {public static void main(String[] args) {BigStar star = new BigStar("刘德华");Star starProxy = Proxy.createProxy(star);System.out.println(starProxy.sing("好运来"));System.out.println("----------------------");System.out.println(starProxy.dance());}
}

效果展示

细节分析代码的运行过程 

  • 对应 测试类 debug 可知

http://www.dtcms.com/wzjs/781625.html

相关文章:

  • 山西省建设局官方网站怎么自建网站
  • 做软件需要网站个人网站建设制作
  • 运河建设集团网站中信建设有限责任公司总监
  • 网站怎么注册一家专门做打折的网站
  • 做视频类型的网站常州市城乡建设局网站
  • 网站开发对企业的关键wordpress全站加密
  • 凡科网做网站教程怎么在网上卖东西给外国人
  • 百度站长工具网站规避电子政务门户网站建设的教训
  • 好看的网站首页欣赏seo网站关键词
  • 网站制作哪个好薇wordpress无法连接数据库连接
  • discuz做门户网站郑州网页制作设计
  • 自己怎么做简单的网站wordpress 帮助模板
  • 网站仿制公司建设银行手机银行app类型
  • 建设银行行号网站查询是什么意思用dw做音乐网站模板
  • 万域网站建设东莞网站建设企慕
  • 网站的设计思路可以做视频片头的网站
  • 网站流量数据在线设计商标logo
  • 怎么做网站美工如何做网站地图
  • 视频网站如何推广微科技h5制作网站
  • 网站建设优化服务效果兰州设计公司有哪些
  • 网站设计制作的特点有哪些产品展示网站源码php
  • 自己制作网站需要什么外贸公司手机网站
  • 建设农村信息网站佛山外贸网站建设报价
  • 白银网站模板邵阳小学网站建设
  • 青海网站建设公司哪家好基层建设期刊在哪个网站被收录
  • cdn网站网络加速器网站登录注册页面模板下载
  • 在东莞建公司网站网络架构必须满足哪些特性
  • p2p网站建设方案oss做网站迁移
  • 企业网站优化服务商网站关键词选取的步骤
  • 建设全网营销型网站图片渐隐 网站头部flash