代理模式
为其他对象提供一种代理以控制这个对象的访问.
程序不希望用户直接访问某一对象, 而是提供一个特殊的对象, 通过这一特殊的对象完成对原对象的访问.
UML图示
代理模式实现重点:
1. 代理类与被代理类实现同一个接口,在代理类中拥有被代理类的实例。
2. 所继承的接口代表需要处理的主题。
代理模式例子
员工帮老板接听一切电话,对于比较重要的电话,员工会交由老板接听。在这里就可以通过代理模式设计系统完成相应功能。
- Phone.java
public interface Phone {
public void hearPhone();
}
- Boss.java
public class Boss implements Phone {
@Override
public void hearPhone() {
System.out.println("Boss is hearing phone");
}
}
- Staff.java
public class Staff implements Phone {
Boss boss = new Boss();
@Override
public void hearPhone() {
System.out.println("Staff is hearing Phone");
if(important){
boss.hearPhone();
}
}
}
- Application.java
public class Application {
public static void main(String[] args){
Staff staff = new Staff();
staff.hearPhone();
}
}