使用场景:一个类不能、不合适直接调用另外一个类。或者调入另外一个类会污染本类。
类特点:1.创建接口,包含真实类要做的方法 2.创建真实类,代理类,都实现该接口 3.真实类中方法写具体内容实现
4.代理类中,创建真实类对象,代理类构造方法中返回真实类对象,代理类中继承的方法中:用真实类对象调用真实类中的方法。代理类还可以自定义一些其他方法,都要在继承的方法中调用。
一、接口类
public interface Hose {
void rentHouse();
}
二、真实类
public class RealHousePerson implements Hose {
@Override
public void rentHouse() {
System.out.println("房东要出租房子");
}
}
三、代理类
* @Description: 精华在于代理类 代理类创建时也创建了真实类,代理类有自己的方法,在调用代理方法时,除了调用真实类的方法,hai
* 还调用了自己的方法。
* 特点:替真实类完成了真实类不方便完成的事;真实类能更专注自己的业务
* 如果客户想加一个新业务代理,那么必须创建新代理类和代理方法,不够灵活
*
* 升级:动态代理看不懂
* @date 2019/11/714:56
*/
public class ProxyHousePerson implements Hose {
private RealHousePerson realHousePerson=new RealHousePerson();
ProxyHousePerson(){}
ProxyHousePerson(RealHousePerson realHousePerson){
this.realHousePerson=realHousePerson;
}
@Override
public void rentHouse() {
realHousePerson.rentHouse();
seeHouse();
managerHouse();
}
public void seeHouse(){
System.out.println("中介带客户看房子");
}
public void managerHouse(){
System.out.println("中介收房租,水电费");
}
}
四、客户端
public class client {
public static void main(String[] args){
RealHousePerson realHousePerson=new RealHousePerson();
ProxyHousePerson proxyHousePerson=new ProxyHousePerson(realHousePerson);
proxyHousePerson.rentHouse();
}
}
动态代理:没看懂。