首页 > 代码库 > 代理模式
代理模式
1. 代理在现实生活中比较常见,例如:我们喝的可乐,是在超市里面或者小卖部里面买的,我们吃的食物,例如:方便面也是在超市或者小卖部里面买的,这些超市或者是小卖部其实并不是可乐方便面的生产者,而是去厂商那里拿货自己去卖其实就是一个代理商
2. 代理模式具有的角色以及行为:
1) 真实的生产商
2) 代替真实生产商的代理商
3) 生产商能够产生的行为的抽象(以为代理商其实就是代理生产商做事,所以应该具备代理商的行为)
3. 代码实现
行为抽象:
package proxymodel; /** * 卖使用的接口厂商和代理商都需要有, * * @author Administrator * */ public interface SellFoodA { public void sellfood(Consumers cunsumers); }
生产商:
package proxymodel; /** * 厂商 * @author Administrator * */ public class Manufactures implements SellFoodA { @Override public void sellfood(Consumers cunsumers) { // TODO Auto-generated method stub System.out.println("卖食物给:"+ cunsumers.getName()); } }
代理商:
package proxymodel; /** * 代理商 * @author Administrator * */ public class Proxy implements SellFoodA { private Manufactures manufactrue=new Manufactures(); @Override public void sellfood(Consumers cunsumers) { // TODO Auto-generated method stub manufactrue.sellfood(cunsumers); } }
顾客:
package proxymodel; /** * 顾客类 * @author Administrator * */ public class Consumers { String name; Consumers(String name){ this.name=name; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
测试:
package proxymodel; public class testProxy { public static void main(String[] args) { // TODO Auto-generated method stub //顾客 Consumers consumersA=new Consumers("张三"); Consumers consumersB=new Consumers("李四"); Consumers consumersC=new Consumers("王五"); //代理商 Proxy proxy=new Proxy(); //在代理商这里去买食物 proxy.sellfood(consumersA); proxy.sellfood(consumersB); proxy.sellfood(consumersC); } }
卖食物给:张三
卖食物给:李四
卖食物给:王五
4. 使用场景
1) 加载资源比较慢,但是有需要频繁使用的
2) 做某种行为需要先进行验证等
例如:连接池就是一个代理,在连接池里面有很多连接后台数据的连接对象,通过连接池可以做操作数据库的某种动作
代理模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。