一、代理模式概要
- 代理模式通常包括三部分
1、 抽象角色:声明真实对象和代理对象的共同接口(或者抽象类);
2、 代理角色:代理角色内部含有对真实对象的引用,一边操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象,另外代理对象在对真实对象操作的的同时,还可以附加其他操作,相当于对真实对象进行了封装;
3、 真实角色:我们最终引用的角色,即代理对象所代理的角色。
二、Demo说明
- 各个程序文件介绍
//Subject.java //抽象角色
//RealSubject.java //真实角色
//ProxySubject.java //代理角色
//Client.java //客户端
1、Subject.java
public abstract class Subject
{
public abstract void request();
}
2、RealSubject.java
public class RealSubject extends Subject
{
@Override
public void request()
{
System.out.println("From real Subject!");
}
}
3、ProxySubject.java
public class ProxySubject extends Subject
{
private RealSubject realSubject;
@Override
public void request()
{
this.preRequest(); //代理之前执行的动作
if (realSubject == null)
{
realSubject = new RealSubject();
}
realSubject.request();
this.postRequest(); //代理之后执行的动作
}
public void preRequest()
{
System.out.println("Pre Request!");
}
public void postRequest()
{
System.out.println("Post Requset!");
}
}
4、Client.java
public class Client
{
public static void main(String[] args)
{
Subject subject = new ProxySubject();
subject.request();
}
}
网友评论