首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

静态代理方式

2013-11-08 
静态代理模式静态代理模式的角色:抽象角色:声明真实角色和代理角色的接口真实角色: 最终要引用的对象代理

静态代理模式
静态代理模式的角色:
抽象角色:声明真实角色和代理角色的接口;
真实角色: 最终要引用的对象
代理角色:持有一个真实角色的引用

一个房东(真实角色),一个中介(代理角色),都能实现卖房子这个动作(接口中的抽象方法)。
但只有房东有房子,它一定能卖房子,但中介必须与房东交互才能卖掉房子(必须持有真实角色的引用)。

1.抽象角色:Subject.java

package proxy;public abstract class Subject{public abstract void request();}


2.真实角色:RealSubject.java
package proxy;public class RealSubject extends Subject{public void request(){System.out.println("From real subject.");}}


3.代理角色:ProxySubject.java
package proxy;public class ProxySubject extends Subject{//代理角色内部引用了真实角色private RealSubject realSubject = new RealSubject(); public void request(){//在真实角色操作之前所附加的操作this.preRequest(); //真实角色所完成的事情realSubject.request(); //在真实角色操作之后所附加的操作this.postRequest(); }private void preRequest(){System.out.println("pre request");}private void postRequest(){System.out.println("post request");}}


4.客户端:Client.java
package proxy;public class Client{public static void main(String[] args){Subject subject = new ProxySubject();subject.request();}}


静态代理虽然也能实现一个代理真实多个真实角色,但每增加一个真实现角色就必须实现真实角色的接口,并添加对应的方法,角色一多就混乱了。

在实际应用中,通常是一个真实角色对应一个代理角色。此外,如果事先并不知道真实角色,该如何使用代理呢?这个问题可以通过Java的动态代理类实现。

热点排行