杭州网站制作流程,有了ddns怎么建设网站,美食网页设计与制作,找不同 网站开发1.代理模式(ProxyMode) 定义#xff1a;外观模式是对类与类之间关系的描述#xff0c;而代理模式是对原来的方法添加其他的操作。 代理有“网关”的含义#xff0c;比如用户访问论坛#xff0c;则要经过代理(网关)授权给你才能访问#xff0c;即 游客和注册用户的权限不同…1.代理模式(ProxyMode) 定义外观模式是对类与类之间关系的描述而代理模式是对原来的方法添加其他的操作。 代理有“网关”的含义比如用户访问论坛则要经过代理(网关)授权给你才能访问即 游客和注册用户的权限不同。 比如说你要去买房子而买房子的过程包括1.看房-2.谈价-3.签订合约-4.正式入手(买房)-5.入住。 而代理类就是对步骤4操作添加其他操作而这些操作都由代理类帮你完成。简化了你的买房过程。 总结对于某些“远程”(难以完成的)操作为了能快速完成此时可以借助代理类帮我们完成部分操作。 比如远程访问一张大图时由于网络原因不知何时回返回过来可以通过代理类先提前返回一个缩略图 使用场景 1远程代理。典型的就是客户端与webservice使用的情况客户端由于是针对OOP编程而不是针对webservice中的方法进行编程 所以得在客户端模拟一下webservice的环境用proxy来对webservice进行包装这样就可以使用proxy代理类来远程操作webservice了。 2虚拟代理。比如你要开发一个大文档查看软件大文档中有大的图片有可能一个图片有100MB在打开文件时不可能将所有的图片都显示出来 这样就可以使用代理模式当需要查看图片时用proxy来进行大图片的打开。 3安全代理。其实也就是本例中所举的买车的例子金钱不够不可以买车 4智能指引。比如在访问一个对象时检测其是否被锁定等情况。 对已有的方法的进行改进此时有两种办法 1、修改原有的方法来适应。这样违反了“对扩展开放对修改关闭”的原则。 2、就是采用一个代理类调用原有的方法且对产生的结果进行控制。这种方法就是代理模式。 使用代理模式可以将功能划分的更加清晰有助于后期维护 2.图解 2.1 共同的接口方法 //买车接口
public interface BuyCar {//买车的行为void buyCar();
}2.2 实现接口的人类 //人类具有现金名字属性具有买车行为的接口。
public class People implements BuyCar {private int cash;private String username;//买车行为Overridepublic void buyCar() {// TODO Auto-generated method stubSystem.out.println(this.username买了一辆小车);}public int getCash() {return cash;}public void setCash(int cash) {this.cash cash;}public String getUsername() {return username;}public void setUsername(String username) {this.username username;}
}2.3 实现接口的代理类 //安全代理类
//人买车代理类具有“人”成员具有买房接口的方法
public class ProxyPeople implements BuyCar {private People pnull;private String proxynamenull;public ProxyPeople(String proxyname){this.proxynameproxyname;}//对于人买车的行为进行安全代理Overridepublic void buyCar() {if(pnull){System.out.println(没人来买车,this.proxyname继续等待客户光临);return ;}System.out.println(proxyname在陪p.getUsername()客户买车。。。);//符合条件则可以买车。if(p.getCash()10000){//代理之前的操作。。。System.out.println(this.proxyname:p.getUsername()有p.getCash()元,你可以买10000以上的小车);p.buyCar();//代理之后的操作。。。System.out.println(this.proxyname成功代理p.getUsername()买了一辆车);}elseSystem.out.println(this.proxyname:p.getUsername()有p.getCash()元低于10000,无法买车);}public People getP() {return p;}public void setP(People p) {if(p!null)System.out.println(p.getUsername()先生/女士来买车了。。。);this.p p;}
}2.4 测试 public class Test {public static void main(String[] args) {// TODO Auto-generated method stubPeople pnew People();p.setCash(12000);p.setUsername(黄生);ProxyPeople proxynew ProxyPeople(A车代理);proxy.setP(p);proxy.buyCar();p.setCash(5000);proxy.buyCar();proxy.setP(null);proxy.buyCar();}
}2.5 运行结果 黄生先生/女士来买车了。。。
A车代理在陪黄生客户买车。。。
A车代理:黄生有12000元,你可以买10000以上的小车
黄生买了一辆小车
A车代理成功代理黄生买了一辆车
A车代理在陪黄生客户买车。。。
A车代理:黄生有5000元低于10000,无法买车
没人来买车,A车代理继续等待客户光临转载于:https://www.cnblogs.com/beyondbycyx/p/4425164.html