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

邢台建网站哪里有简单的商城的网页设计作业

邢台建网站哪里有,简单的商城的网页设计作业,wordpress页脚小工具,地图上搜索不到的公司正规吗代理模式#xff08;Proxy Pattern#xff09; 一 定义 为其他对象提供一种代理#xff0c;以控制对这个对象的访问。 代理对象在客户端和目标对象之间起到了中介作用#xff0c;起到保护或增强目标对象的作用。 属于结构型设计模式。 代理模式分为静态代理和动态代理。…代理模式Proxy Pattern 一 定义 为其他对象提供一种代理以控制对这个对象的访问。 代理对象在客户端和目标对象之间起到了中介作用起到保护或增强目标对象的作用。 属于结构型设计模式。 代理模式分为静态代理和动态代理。 静态代理是显式声明被代理对象即硬编码出来的代理结构 动态代理是动态配置和替换被代理对象即通过在jvm中生成一个代理类来实现代理。 代理模式标准示例 顶层会有 subject的接口RealSubject 和 Proxy 都实现了 Subject接口。 Proxy中拥有 RealSubject对象的引用在Proxy的构造方法中将RealSubject作为参数传入然后在Proxy 的同名方法中调用 RealSubject的方法。但是在调用 RealSubject的方法前后可以加入Proxy的自有逻辑。 上述类图中各个类的代码如下 subject 接口类ISubject public interface ISubject{void request(); }被代理的类RealSubject public class RealSubject implements ISubject{public void request(){System.out.println(real reqeust);} }代理类Proxy public class Proxy implements ISubject{private ISubject target;public Proxy(ISubject target){this.target target;}public void request(){before();//调用前逻辑target.request();after();//调用后逻辑} }客户端 ProxyClient public class ProxyClient{public static void main(String[] args){Proxy proxy new Proxy(new RealSubject());proxy.request();} }接下来我们通过一个实际场景来呈现出静态代理与动态代理的异同。 阿毛想租房他首先考虑的是房产中介因为房源集中在中介那里。 首先是静态代理的实现 租户接口为ITenant 中介类为HouseProxy 实际租户有两个人Amao 和 LaoSan 代码如下 public interface ITenant {void require(); }public class HouseProxy implements ITenant{private ITenant custom;public HouseProxy(ITenant custom){this.custom custom;}public void require() {before();custom.require();after();}private void before() {System.out.println(当前代理权限通过验证可以登录系统开始筛选房源。);}private void after() {System.out.println(按照上述要求找到的房源有xxx);System.out.println();} }public class Amao implements ITenant {public void require() {System.out.println(阿毛的要求一室一厅2楼朝南2000元以内);} }public class LaoSan implements ITenant{public void require() {System.out.println(老三的要求二室一厅3楼以上南北通透4000元以内);} }客户端调用代码 public class Client {public static void main(String[] args) {//中介为阿毛找房HouseProxy proxy new HouseProxy(new Amao());proxy.require();//中介为老三找房HouseProxy proxy1 new HouseProxy(new LaoSan());proxy1.require();} }执行结果为 当前代理权限通过验证可以登录系统开始筛选房源。 阿毛的要求一室一厅2楼朝南2000元以内 按照上述要求找到的房源有xxx当前代理权限通过验证可以登录系统开始筛选房源。 老三的要求二室一厅3楼以上南北通透4000元以内 按照上述要求找到的房源有xxx动态代理的实现 由于租户不是随时可以看房所以要和中介约好看房时间所以我们在ITenant 接口中增加了看房时间。 public interface ITenant {void require();void lookHouseTime(); }相应的Amao和LaoSan 都需要实现这个方法 public class Amao implements ITenant {public void require() {System.out.println(阿毛的要求一室一厅2楼朝南2000元以内);}public void lookHouseTime() {System.out.println(阿毛看房时间周末);} }public class LaoSan implements ITenant {public void require() {System.out.println(老三的要求二室一厅3楼以上南北通透4000元以内);}public void lookHouseTime() {System.out.println(老三看房时间周中);} }最后是采用JDK动态代理实现的HouseProxy public class JDKHouseProxy implements InvocationHandler {private ITenant custom;public ITenant getInstance(ITenant custom){this.custom custom;Class? clazz custom.getClass();return (ITenant) Proxy.newProxyInstance(clazz.getClassLoader(),clazz.getInterfaces(),this);}public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {if (!method.getName().equals(lookHouseTime)) {before();}Object result method.invoke(this.custom,args);if (!method.getName().equals(lookHouseTime)) {after();}return result;}private void before() {System.out.println(--------------------);System.out.println(中介当前代理权限通过验证可以登录系统开始筛选房源。);}private void after() {System.out.println(中介按照上述要求找到的房源有xxx);}}这里我们会发现使用动态代理后代理中介无需实现ITenant接口如果ITenant接口发生变化也不会对代理对象产生影响。 客户端调用类 public class Client {public static void main(String[] args) {//中介为阿毛找房JDKHouseProxy proxy new JDKHouseProxy();ITenant tenantAmao proxy.getInstance(new Amao());tenantAmao.require();tenantAmao.lookHouseTime();//中介为老三找房JDKHouseProxy proxy1 new JDKHouseProxy();ITenant laosan proxy1.getInstance(new LaoSan());laosan.require();laosan.lookHouseTime();} }执行结果 -------------------- 中介当前代理权限通过验证可以登录系统开始筛选房源。 阿毛的要求一室一厅2楼朝南2000元以内 中介按照上述要求找到的房源有xxx 阿毛看房时间周末 -------------------- 中介当前代理权限通过验证可以登录系统开始筛选房源。 老三的要求二室一厅3楼以上南北通透4000元以内 中介按照上述要求找到的房源有xxx 老三看房时间周中动态代理除了JDK的API之外还有cglib的方式。 二者区别在于JDK的动态代理需要目标对象有继承体系即实现接口而cglib则不需要被代理对象存在继承体系。 以下是cglib的示例 cglib的中介代理类CglibHouseProxy public class CglibHouseProxy implements MethodInterceptor {public Object getInstance(Class? clazz){Enhancer enhancer new Enhancer();enhancer.setSuperclass(clazz);enhancer.setCallback(this);return enhancer.create();}public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {if (!method.getName().equals(lookHouseTime)) {before();}Object result proxy.invokeSuper(obj,args);if (!method.getName().equals(lookHouseTime)) {after();}return result;}private void before() {System.out.println(--------------------);System.out.println(中介当前代理权限通过验证可以登录系统开始筛选房源。);}private void after() {System.out.println(中介按照上述要求找到的房源有xxx);} }客户端调用类 public class CglibClient {public static void main(String[] args) {CglibHouseProxy proxy new CglibHouseProxy();ITenant tenant (ITenant) proxy.getInstance(Amao.class);tenant.require();tenant.lookHouseTime();} }执行结果 -------------------- 中介当前代理权限通过验证可以登录系统开始筛选房源。 阿毛的要求一室一厅2楼朝南2000元以内 中介按照上述要求找到的房源有xxx 阿毛看房时间周末补充cglib pom.xml的引入 dependencygroupIdcglib/groupIdartifactIdcglib-nodep/artifactIdversion2.2/version/dependency以上就是本文全部内容。感谢您的阅读。
http://www.w-s-a.com/news/273238/

相关文章:

  • 申请网站就是做网站吗wordpress tag 优化
  • 建站系统排行榜菏泽机关建设网站
  • 网站群建设费用科技通信网站模板下载
  • 网站开发的流程是怎样的自己做自媒体在哪个网站比较好
  • 网站的html代码在哪网页线上开发制作
  • 免费商用自媒体图片网站做网站好的公司有哪些
  • 阿雷网站建设公司中国建筑考试网官网首页
  • 厦门网站制作网页无法跳转到建设银行网站
  • 怎么建设自己网站简述网页布局的几种方法
  • 软文营销文案100篇如何优化搜索引擎的搜索功能
  • 做网站创意杭州家具网站建设方案
  • 福州seo网站推广优化乐清建网站
  • 莆田cms建站模板简述网站设计流程
  • 班级网站建设组织机构建设注册中心网站首页
  • 即墨网站建设地址怎么在文档中做网站一点就开
  • 做网站联系方式互联网行业分析
  • 杭州网站建设索q479185700高淳网站建设
  • 有什么做任务拿钱的网站精准的搜索引擎优化
  • 洛阳有建社网站的吗电力建设工程质量监督总网站
  • 网站404报错热水器网站建设 中企动力
  • 网站降权恢复淘宝 网站建设
  • 安州区建设局网站台州优秀关键词优化
  • 网站假设教程湖南微信管理系统
  • 网站备案属于公司哪一块哪个网站是专门做封面素材
  • 广州个人做网站内江建设局网站
  • 网站开发 360百科大连哪里有手机自适应网站建设维护
  • 如何查网站pv网站功防教程
  • 建设银行网站信息补充营销推广的作用
  • 网站见建设seo外链自动群发工具
  • 在境外做网站网站团购网站seo