代理模式通俗来说就是 Proxy 按需求定义接口Subject ,RealSubject来实现接口Subject,Proxy再来调用RealSubject ,让RealSubject去实现定制的动作,所以RealSubject是Proxy的成员变量
以下是官方说辞
(代理模式(Proxy Pattern)是Gof 23种Java常用的设计模式之一,代理模式定义:为其他的对象提供一种代理以控制这个对象的访问),使用代理模式创建代理对象,让代理对象控制目标对象的访问(目标对象可以是远程的对象,创建开销大的对象或需要安全控制的对象),并且可以在不该把目标对象的情况下添加一些额外的功能;)
public interface SecDelegate {
void tel();
void pay();
}
public class Sec implements SecDelegate {
private String name;
public Sec(String name){
this.name=name;
}
@Override
public void tel() {
System.out.println(name+"打电话");
}
@Override
public void pay() {
System.out.println(name+"开工资");
}
}
package com.sanmao4;
import java.util.Objects;
/**
* Created by root on 16-7-12.
*/
public class Boss {
private String name;
private SecDelegate delegate;
public Boss(String name,Sec delegate){
this.name=name;
this.delegate=delegate;
}
public void edu(){
System.out.println(name+"在培训员工");
}
public void call(){
delegate.tel();
// System.out.println(name+"在打电话");
}
public void pay(){
delegate.pay();
// System.out.println(name+"在开工资");
}
}
package com.sanmao4;
/**
* Created by root on 16-7-12.
*/
public class Test {
public static void main(String[] args) {
Sec li=new Sec("李秘书");
Boss huang=new Boss("黄老板",li);
huang.call();
huang.edu();
huang.pay();
}
}