代理模式 | Proxy Pattern
来源:互联网 发布:java安装时出现错误 编辑:程序博客网 时间:2024/06/04 19:59
代理模式:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
组成:
抽象角色:通过接口或抽象类声明真实角色实现的业务方法。
代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。
真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。
抽象角色:一个买车的接口
public interface buy_car { public void buy_mycar(); }
真实角色:People实现 buy_car 接口,具有买车行为
class people implements buy_car { private int cash; private String vip; private String username; @Override public void buy_mycar() { // TODO Auto-generated method stub System.out.print(username+"是vip 客户,可以直接购买新车!"); } 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; } public String getVip(){ return vip; } public void setVip(String vip){ this.vip = vip; } }
代理角色:people类不能拥有车,必须经过proxy代理类的认证,符合条件之后才可以拥有车辆,新建一个代理,这个代理类来考察当前的people是否有资格进行买车:
class proxyclass implements buy_car { private people people; public people getPeople(){ return people; } public void setPeople(people people){ this.people = people; } @Override public void buy_mycar() { // TODO Auto-generated method stub if (people.getVip() == "vip"){ people.buy_mycar(); return ; } if(people.getCash()>=50000){ System.out.println(people.getUsername()+"买了新车,交易结束!"); } else { System.out.println(people.getUsername()+"钱不够,不能买车,继续比赛!"); } } }
最后创建一个客户端,来模拟买车的行为:
public class run_main { public static void main(String[] args) { // TODO Auto-generated method stub people people_1 =new people(); people_1.setCash(60000); people_1.setUsername("jeck"); people people_2 =new people(); people_2.setCash(40000); people_2.setUsername("rose"); people people_3 =new people(); people_3.setCash(0); people_3.setUsername("tom"); people_3.setVip("vip"); proxyclass proxy_buy = new proxyclass(); proxy_buy.setPeople(people_1); proxy_buy.buy_mycar(); proxy_buy.setPeople(people_2); proxy_buy.buy_mycar(); proxy_buy.setPeople(people_3); proxy_buy.buy_mycar(); } }
结果如下:
jeck买了新车,交易结束! rose钱不够,不能买车,继续比赛! tom是vip 客户,可以直接购买新车!
阅读全文
0 0
- 代理模式(Proxy Pattern)
- 代理模式(Proxy Pattern)
- Proxy Pattern (代理模式)
- Proxy pattern 代理模式
- 代理模式(Proxy pattern)
- 代理模式 Proxy Pattern
- 代理模式【Proxy Pattern】
- 代理模式(Proxy Pattern)
- 代理模式(PROXY PATTERN)
- 代理模式(Proxy Pattern)
- 代理模式(Proxy Pattern)
- 代理模式【Proxy Pattern】
- 代理模式【Proxy Pattern】
- proxy pattern 代理模式
- Proxy Pattern 代理模式
- 代理模式-Proxy Pattern
- 代理模式 Proxy Pattern
- 代理模式Proxy Pattern
- 现在才知道Java中变量声明可以放在赋值后面。。。
- 设计模式之职责链模式
- 快速、插入、冒泡排序,二分查找
- CentOS7 安装ARM Linux交叉编译环境
- mysql中的模糊查询
- 代理模式 | Proxy Pattern
- 图论小结(最小生成树)
- map函数学习
- X问题
- RecyclerView的ItemAnimator
- 搜索引擎选择: Elasticsearch与Solr
- SYN Flood攻击及防御方法
- json学习
- springboot学习之--Logback日志详解(二)