代理模式

2017-08-12  本文已影响0人  嗨嗨小白兔

代理模式:当客户端无法直接访问某个对象或者访问困难时,使用代理模式。代理模式就是建立一个和原对象有相同功能的新对象,但是在新对象内部可以含有比原对象多的方法。访问代理之后的新对象,就跟访问原对象一样。

比如:房东出租房子,房东需要跟租户签合同,跟租户收佣金,出租房子。现在有了中介代理人之后,租客不需要跟房东直接接触,房东不需要直接跟租户签合同,收佣金,出租房子,房东只需要跟中介代理人接触,同样,租客也要跟代理人接触,这个代理人对于租客,就像房东一样。

代码示例:

房东和代理人有同样的功能,出租房子。这两个角色需要继承自同一个抽象类,这个类中含有一个方法,出租房子。

相同功能的抽象类:

public abstract class RentHouse {

public abstract void rentHouse();

}

房东原对象:

public class Landlord extends RentHouse{

public void rentHouse(){

System.out.println("landlord rent the house");

}

}

签订合同:

public class Contract {

public void signContract(){

System.out.println("sign contract");

}

}

收租金:

public class Rent {

public void getRent(){

System.out.println("get Rent");

}

}

代理人新对象:

public class AgencyProxy extends RentHouse {

private Landlord landlord;

private Contract contract;

private Rent rent;

public AgencyProxy(){

landlord = new Landlord();

contract = new Contract();

rent = new Rent();

}

@Override

public void rentHouse() {

contract.signContract();

landlord.rentHouse();

rent.getRent();

}

}

测试:

AgencyProxy agency = new AgencyProxy();

agency.rentHouse();

上一篇 下一篇

猜你喜欢

热点阅读