代理这个词通俗的讲就是中间人的意思。比如说你租房找的中介公司,中介与你就是代理与被代理的关系。在租房的过程中,原本一切事情都应该由你自己来做,比如找房源,联系房东,讨价还价,最终签约租房等等。但是,如果你找了中介,那么诸如找房源,联系房东这样的事情,中介就帮你做了,这就是代理。你只要最后跟房东商量一下价钱,然后签约就可以了,当然中介会收一些中介费。
从租房这件事情我们可以总结以下几点(下面代码有类比的注释):
1. 你是租房的主角,你要做的事情是租到一个房子。
2. 中介看上去像是一个要租房的人一样(到处找房子、联系房东)
3. 代理在你租房的前后都做了一些事情。(之前找房源,联系房东。之后收房租)
4. 中介最后还是需要你来与房东签约(租房)
下面看一下租房这件事情用java是怎么做的?
这里约定:
1. 租房:指的是与房东商量价钱以及签订租约
2. 找房源、联系房东:租房过程中的一些琐碎的事情
Java代理模拟租房过程
租用者接口:
public interface Renter { public void rent(); public String getName(); //为了打印信息生动加的一个方法 }
租房者:
public class HouseRenter implements Renter { private String name; public HouseRenter(String name) { this.name = name; } @Override public void rent() { System.out.println(name + "与房东商量价钱"); //假设价钱总是能商量好 System.out.println(name + "与房东签约"); } @Override public String getName() { return name; } }
房产中介(代理) :
public class HouseAgent implements Renter{ private Renter customer; private String name; public HouseAgent(Renter renter) { name = "小李"; //中介都叫小李 this.customer = renter; } @Override public void rent() {//中介就好像跟要租房的人一样 System.out.println(name + "找到一个房源");//中介做的事情 System.out.println(name + "联系到了房东");//中介做的事情 customer.rent();//最终还是由房客真正做租的动作 System.out.println(name + "收到" + customer.getName() + "的中介费");//中介做的事情 } @Override public String getName() { return name; } }
模拟租房的过程:
public static void main(String[] args) { Renter lilei = new HouseRenter("李蕾"); //租房屌丝李蕾 HouseAgent xiaoli = new HouseAgent(lilei); //房屋中介妹子小李 xiaoli.rent(); //中介妹子代理屌丝租房 }
输出:
小李找到一个房源 小李联系到了房东 李蕾与房东商量价钱 李蕾与房东签约 小李收到李蕾的中介费
上面就是一个Java静态代理的例子。代理HouseAgent是静态存在的,使用的时候直接new一个用就是了。静态代理的缺点是它所代理的事情是固定的,是由他所实现的接口决定了的。动态代理则可以打破这个限制。
相关推荐
JAVA静态代理和动态代理
Java 静态代理
Java静态代理和动态代理
这里提供了静态代理和动态代理的入门写法~一看即懂!
Java 代理模式: 详见:http://blog.csdn.net/q610098308/article/details/74144046
Java设计模式——代理设计模式(静态代理和动态代理) 各种情况例子源码
java提高-动态代理与静态代理.docx
在代理模式中,主要有两种类型:静态代理和动态代理。 1.静态代理: 静态代理是指在编译期间就已经确定代理类和被代理类的关系,需要手动编写代理类。代理类需要实现与被代理类相同的接口,并且在代理类中持有一个被...
NULL 博文链接:https://871656094.iteye.com/blog/2355335
- 静态代理与动态代理 - 常见的动态代理实现 - JDK Proxy - CGLIB - JDK Proxy 和 CGLIB 的对比 - 动态代理的实际应用 - Spring AOP 说在前面:今天我们来聊一聊 Java 中的代理,先来聊聊故事背景: 小明想...
java static proxy dynamic proxy
Java中的代理模式--静态代理和动态代理 Java中的代理模式--静态代理和动态代理
1.2 静态代理概述 静态代理的基本结构 2.1 代理接口 2.2 真实主题类 2.3 代理类 静态代理的实现步骤 3.1 定义代理接口 3.2 实现真实主题类 3.3 实现代理类 3.4 使用代理类 静态代理的优缺点 最佳实践与注意事项
Java 动态代理详解(代理模式+静态代理+JDK动态代理+CGLIB动态代理)
Java代理模式模板代码,包含动态代理与静态代理。 静态代理使用了传统的代理类来代理,动态代理中使用了jdk的反射原理进行代理
JAVA JDK静态代理、动态代理、CGlib代理的代码演示 为对象增加功能
java设计模式【之】静态代理【源码】【场景:帮爸爸买菜】.rar * 代理模式 * 在开发者的角度来看,创建一个代理对象,提供给用户使用,避免用户直接访问真正的对象 * 在用户角度来看,就是普通的类方法调用 * ...