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

网站制作模板网站建设及相关流程图

网站制作模板,网站建设及相关流程图,学校学网页设计,西安免费做网站多少钱什么是代理模式 代理模式为另一个对象提供替身或者占位符,以便控制客户对对象的访问,管理访问的方式有很多种。例如远程代理、虚拟代理、保护代理等。 远程代理:管理客户和远程对象之间的交互。 虚拟代理:控制访问实例化开销大的对…

什么是代理模式

代理模式为另一个对象提供替身或者占位符,以便控制客户对对象的访问,管理访问的方式有很多种。例如远程代理、虚拟代理、保护代理等。
远程代理:管理客户和远程对象之间的交互。
虚拟代理:控制访问实例化开销大的对象。
保护代理:基于调用者,控制对对象方法的调用。

类图

在这里插入图片描述

代码

案例:防止对person类的访问中,访问了不该访问的方法
以保护代理为例,主要是基于java内置的动态代理,来控制对对象方法的调用,其类图如下:
在这里插入图片描述

Person接口

public interface Person {String getName();String getGender();String getInterests();int getGeekRating();void setName(String name);void setGender(String gender);void setInterests(String interests);void setGeekRating(int rating);
}

Person实现类

public class PersonImpl implements Person{String name;String gender;String interests;int rating;int ratingCount = 0;public PersonImpl(String name, String gender, String interests, int rating, int ratingCount) {this.name = name;this.gender = gender;this.interests = interests;this.rating = rating;this.ratingCount = ratingCount;}@Override
public String getName() {return name;
}@Override
public void setName(String name) {this.name = name;
}@Override
public int getGeekRating() {if (ratingCount == 0) {return 0;} else {return rating  / ratingCount;}
}@Override
public void setGeekRating(int rating) {this.rating += rating;ratingCount++;
}@Override
public void setGender(String gender) {this.gender = gender;
}@Override
public String getGender() {return gender;
}@Override
public String getInterests() {return interests;
}@Override
public void setInterests(String interests) {this.interests = interests;
}

NonOwnerInvocationHandler类

//InvocationHandler
public class NonOwnerInvocationHandler implements InvocationHandler {Person person;public NonOwnerInvocationHandler(Person person) {this.person = person;}@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {try {if (method.getName().startsWith("get")) {return method.invoke(person, args);} else if (method.getName().equals("setGeekRating")) {return method.invoke(person, args);} else if (method.getName().startsWith("set")) {throw new Throwable();}} catch (InvocationTargetException e) {e.printStackTrace();}return null;
}
}

OwnerInvocationHandler类

public class OwnerInvocationHandler implements InvocationHandler {Person person;public OwnerInvocationHandler(Person person) {this.person = person;}// 
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {try {if (method.getName().startsWith("get")) {return method.invoke(person, args);} else if (method.getName().equals("setGeekRating")) {throw new Throwable();} else if (method.getName().startsWith("set")) {return method.invoke(person, args);}} catch (InvocationTargetException e) {e.printStackTrace();}return null;
}
}

测试:

public class Test {public static void main(String[] args) {Person kang = new PersonImpl("kwb", "boy", "ball", 1, 3);Person owner = getProxy.getOwnerProxy(kang);System.out.println(owner.getName());}
}

区别

装饰器模式为对象加上行为,而代理则是控制访问。

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

相关文章:

  • 网站建设多久可以建成叙述网站的建设意义所在
  • 东莞网站快速排名html5好的网站模板
  • 长治网站制作的流程建站之星安装教程
  • 网站全面推广方案ppt做的好的网站有哪些内容
  • 电子商务网站首页网站关键词优化教程
  • 福田做棋牌网站建设哪家技术好网站开发搭建合同
  • 大连网站建设平台wordpress技术教程 pdf
  • 宜阳建站怎么做北京赛车网站
  • 英文集团网站设计建设群晖 wordpress 设置
  • 介绍自己做的网站的论文互联网哪个专业前景好
  • 浅谈高校图书馆网站建设网站建站的一般步骤
  • 网站源代码怎么生成网页2024房地产最新消息
  • 网站标题 没有排名推广收款码平台有哪些
  • 深圳市企业网站seo营销工具免费个人网页制作成品
  • 网站域名和密码学网页设计学费多少
  • 虚拟主机不能通过什么架设网站佛山seo优化评价
  • 网站建设需要的职位建设网站的公司兴田德润可以吗
  • 网站上用的字体做网站算 自由职业者
  • 仿百度文库网站源码商业版dedecms(梦织)系统内核深圳公司注册流程及资料
  • 网站建设与维护蒋勇从域名注册哪个网站便宜
  • 成都做网站设计哪家好深南花园裙楼 网站建设
  • 达州大亚网站建设珠海做网站哪家专业
  • 上海专业建设网站有什么好的网站可以接单子做
  • 人和动物做的电影网站网站增加外链的方法有哪些
  • 志鸿优化设计答案wordpress mysql 优化
  • 网站的关键词在哪设置最好看免费观看高清大全宫崎骏
  • 网站搜索引擎优化技术北京 网站设计 公司
  • 弄个做网站公司中文网站模板下载
  • 网站好的案例seo推广人员
  • 网站建设职位郑州专业做网站