介绍
代理模式为其他对象提供一种代理以控制对这个对象的访问。
使用场景:
当无法或不想直接访问某个对象或访问某个对象存在困难时可通过一个代理对象来间接访问,问了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。
优点:
1.职责清晰。
2.高扩展性。
缺点:
1.增加了代理对象这个中间层,可能会造成请求的处理速度变慢。
UML类图
代码实现
IBuyHouse.java
public interface IBuyHouse {
void buyHouse();
}
Customer.java
public class Customer implements IBuyHouse {
private int cash;//购房款
@Override
public void buyHouse() {
System.out.println("Buying house costs " + cash);
}
public int getCash() {
return cash;
}
public void setCash(int cash) {
this.cash = cash;
}
}
BuyHouseProxy.java
public class BuyHouseProxy implements IBuyHouse {
private Customer customer;
public BuyHouseProxy(Customer customer) {
this.customer = customer;
}
@Override
public void buyHouse() {
customer.buyHouse();
}
}
Main.java
public class Main {
public static void main(String[] args) {
Customer customer = new Customer();
customer.setCash(100000000);
BuyHouseProxy proxy = new BuyHouseProxy(customer);
proxy.buyHouse();
}
}
输出:
Buying house costs 100000000