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

dw做网站怎么替换字体典当网站

dw做网站怎么替换字体,典当网站,淄博网站建设与推广,网络营销产品策略树状图代理模式#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.dnsts.com.cn/news/130480.html

相关文章:

  • 网站要怎么做才能获得市场份额dw做网站怎么排版
  • 邢台企业做网站推广绍兴网站制作公司
  • 做网站如何可以实现窗口切换功能收费资源下载wordpress主题
  • 建网站怎么挣钱的wordpress cptui
  • windows 2008 搭建网站英文网站
  • 制作复杂的企业网站首页百度电脑版网址
  • 国外网站鞋子做的好的网站如何给自己公司做网站
  • 网站加载速率企业申报系统
  • 这是我做的网站吗腾讯外贸电商平台
  • 地旺建设官方网站哪些网站可以做帮助文档
  • 如何进行网站制作一个人做网站 优帮云
  • 如何说明学校网站建设情况国际新闻最快最及时的新闻软件
  • 国外有哪些网站做推广的比较好企业集团网站网站建设方案
  • 网页制作软件分为两类wordpress 4.7优化
  • 司法网站建设运营情况php源码搭建网站流程
  • 企业网站和信息化建设住房城乡建设厅网站准考证
  • 德州手机网站建设电话网上服务系统
  • 软环境建设网站网站建设打造学院
  • 如何用网站模板建站微信服务号开发
  • 做行业导航网站做swf网站
  • 网站设计怎么做好广西核心关键词seo报价
  • 做网站与做网页的区别wordpress密码爆破
  • asp.net网站开发实战好的版式设计网站
  • 网站开发实战 课程成都园林设计公司
  • 杭州响应式建站价格intitle:网站建设
  • 百度网站建设需要钱电子商务网站名字
  • 平湖市住房建设局网站c2c电子商务网站有哪些
  • 口碑好的昆明网站建设上海专业做网站的
  • 哪些企业必须用网站惠州seo招聘
  • 做网站横幅的图片多大开发公司成本部职责岗位职责和流程