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

中国建设教育协会是个什么网站台州做网站的公司有哪些公司

中国建设教育协会是个什么网站,台州做网站的公司有哪些公司,asp.net企业网站后台管理系统,163建筑网站一、设计模式之代理设计 代理设计是在Java开发中使用较多的一种设计模式,所谓的代理设计模式就是指一个代理主体操作真实主体,真实主体操作具体业务,代理主体负责给具体业务添砖加瓦。 就好比在生活中你有一套房子想要出租(你真实主体)&…

一、设计模式之代理设计

代理设计是在Java开发中使用较多的一种设计模式,所谓的代理设计模式就是指一个代理主体操作真实主体,真实主体操作具体业务,代理主体负责给具体业务添砖加瓦。
就好比在生活中你有一套房子想要出租(你=真实主体),你找了房产中介(中介=代理主体)。真实主体负责提供房屋和收钱,代理主体负责带客户看房 、扣除手续费。租客只管租房子和付款,至于谁提供的房子并不关心。

我们发现,只需要定义一个租赁的接口,真实主体与代理主体都可以实现此接口,然后再由代理主体操作真实主体即可,上面的要求可以形成如下的代码:

1. 定义租赁接口

package com.javabasic.proxy;/*** 定义抽象接口*/
public interface House {/*** 定义抽象方法 租赁*/void rent();
}

2. 定义真实主体 - 房东

package com.javabasic.proxy;/*** 定义真实主体 房东*/
public class Owner implements House{@Overridepublic void rent() {System.out.println("房东提供房子,收取租金200元/月");}
}

3. 定义代理主体 - 中介

package com.javabasic.proxy;/*** 定义代理主体 中介*/
public class Agent implements House{// 接收真实主体 房东private House house;/*** 通过构造方法,让中介与房东之间产生联系。* 根据Java动态绑定机制,House运行时的真实类型是房东类型,就可以获取到房东的出租行为。* @param house*/public Agent(House house){this.house = house;}/*** 中介对房东出租业务进行增强*/@Overridepublic void rent() {rentBefore();house.rent(); // 房东 出租rentAfter();}private void rentBefore(){System.out.println("中介负责寻找租客、带看、保存租客信息、签合同、收取租金。");}private void rentAfter(){System.out.println("中介负责租客退租后的清扫工作。");}}

4. 主程序 中介出租房屋

在这里插入图片描述

二、动态代理

上面讲解的代理机制的操作,属于静态代理,因为每一个代理类只能为一个接口服务,这样程序开发中必然会产生过多的代理类。最好的做法是可以通过一个代理类完成全部的代理功能,那么此时就必须使用动态代理功能。

Java 中想要实现动态代理的机制,则需要java.lang.reflect.InvocationHandler接口java.lang.reflect.Proxy类的支持。

InvocationHandler接口的定义如下:

package java.lang.reflect;public interface InvocationHandler {public Object invoke(Object proxy, Method method, Object[] args)throws Throwable;
}

Proxy类是专门完成代理的操作类,可以通过此类为一个或多个接口动态地生成实现类。

	/*ClassLoader loader : 类加载器Class<?>[] interfaces : 得到真实类实现的全部接口InvocationHandler h : 得到InvocationHandler子类实例*/@CallerSensitivepublic static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)throws IllegalArgumentException{...}

房屋租赁代码修改如下 :

1. 需要房东实现租赁的接口

public interface House {/*** 定义抽象方法 租赁*/void rent();
}public class Owner implements House{@Overridepublic void rent() {System.out.println("房东提供房子,收取租金200元/月");}
}

2. 创建代理类(InvocationHandler / Proxy)

package com.javabasic.proxy;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;public class Agent2 implements InvocationHandler {// 接收真实主体private Object obj;// 对外提供绑定真实主体方法public Object bind(Object obj){this.obj = obj;// 通过真实对象创建代理对象并返回给调用者。/*Proxy.newProxyInstance : 三个参数类加载器 :  this.obj.getClass().getClassLoader()真实类型实现的所有接口 : this.obj.getClass().getInterfaces()代理类  : thisreturn 代理对象*/Object object = Proxy.newProxyInstance(this.obj.getClass().getClassLoader(),this.obj.getClass().getInterfaces(), this);System.out.println("bind之后object真实类型 = " + object.getClass().getName());return object;}/*** 代理类会执行的方法。* @param proxy 代理主体* @param method 调用的方法* @param args 方法的参数** @return* @throws Throwable*/@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {System.out.println("proxy真实类型 = " + proxy.getClass().getName());rentBefore();method.invoke(this.obj, args); // 通过反射执行真实主体方法rentAfter();return null;}private void rentBefore(){System.out.println("中介负责寻找租客、带看、保存租客信息、签合同、收取租金。");}private void rentAfter(){System.out.println("中介负责租客退租后的清扫工作。");}
}

3. 主程序 出租

在这里插入图片描述

http://www.yayakq.cn/news/708418/

相关文章:

  • 电子商务网站建设精英为什么做pc网站
  • 最新网页游戏开服表重庆网站优化
  • 秦皇岛市做公司网站的天津河东做网站公司
  • 借贷网站建设最新流行网站开发技术
  • 电子商务网站建设考试简答题苏州建设交通职业技术学院官网
  • 网站备案都审核什么资料做现金贷网站的公司
  • 怎样做才能让百度前两页有自己网站内容淘宝网站上的图片是怎么做的
  • 服务器上网站打不开建设三合一网站
  • wordpress 外贸站协会网站建设方案书
  • 山西官方网站有哪些免费设计图片素材网站
  • 资阳做网站phpstudy搭建本地网站
  • dw建立网站之后怎么做网站每天点击量多少好
  • 自助建站软件排行榜用微信怎么做商城网站吗
  • wordpress 转载插件外贸网站seo怎么做
  • 即墨区城乡建设局网站官网做网站费用怎么付
  • 南宁营销型网站专家深圳发布广告的平台有哪些
  • SEO案例网站建设昆明定制化网站建设
  • 制作公司网站 优帮云企业网站建设哪里好
  • 天津市住房和城乡建设厅官方网站建筑管理招聘网
  • 网站建设怎么放到云空间网络营销市场调研的优势有
  • 做一个卖车的网站该怎么做常州网站价格
  • 华北理工大学学科建设处网站网站要精细是什么意思
  • 天津建设工程交易中心网站上海建设银行官网网站6
  • 网站互动怎么做北京最大的广告公司
  • 什么网站可以免费做试卷在线流程图制作
  • 网站建设最重要的是什么网站建设推广图片
  • 欧美做爰爰爰爰网站查询关键词排名工具
  • 舞蹈网站建设报价91色做爰网站
  • 网站建设介绍书软件设计方案怎么写
  • 自助建站平台物流网站哪个好