代理模式的基本介绍
代理模式被称为委托模式,是结构型模式,在生活中非常常见的,比如说,叫同事帮助带早餐也是一种代理,如果要请律师帮你打官司也是一种代理。
代理模式的的定义
为其他对象提供一种代理以控制对这个对象的访问。
代理模式的使用的场景
当无法或不想直接访问某个对象或访问某个对象存在困难可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。
代理模式的简单实现程序代码如下:
//抽象主题,需要被实现的接口
public interface Subject {
public void operation();
}
//代理对象
public class ProxySubject implements Subject {
Subject subject;
public ProxySubject(Subject subject) {
this.subject = subject;
}
@Override
public void operation() {
System.out.println("ProxySubject subject.operation()");
subject.operation();
}
}
//真实对象
public class RealSubject implements Subject{
@Override
public void operation() {
// TODO Auto-generated method stub
System.out.println("RealSubject operation()");
}
}
//测试
public class Test {
public static void main(String[] args) {
Subject subject = new RealSubject();
//subject.operation();
ProxySubject proxySubject = new ProxySubject(subject);
proxySubject.operation();
}
}
运行程序打印如下:
ProxySubject subject.operation()
RealSubject operation()
这样看下来,是不是觉得代理模式非常简单?
代理模式被称为委托模式,是结构型模式,在生活中非常常见的,比如说,叫同事帮助带早餐也是一种代理,如果要请律师帮你打官司也是一种代理。
代理模式的的定义
为其他对象提供一种代理以控制对这个对象的访问。
代理模式的使用的场景
当无法或不想直接访问某个对象或访问某个对象存在困难可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。
代理模式的简单实现程序代码如下:
//抽象主题,需要被实现的接口
public interface Subject {
public void operation();
}
//代理对象
public class ProxySubject implements Subject {
Subject subject;
public ProxySubject(Subject subject) {
this.subject = subject;
}
@Override
public void operation() {
System.out.println("ProxySubject subject.operation()");
subject.operation();
}
}
//真实对象
public class RealSubject implements Subject{
@Override
public void operation() {
// TODO Auto-generated method stub
System.out.println("RealSubject operation()");
}
}
//测试
public class Test {
public static void main(String[] args) {
Subject subject = new RealSubject();
//subject.operation();
ProxySubject proxySubject = new ProxySubject(subject);
proxySubject.operation();
}
}
运行程序打印如下:
ProxySubject subject.operation()
RealSubject operation()
这样看下来,是不是觉得代理模式非常简单?