Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History

1.一个拦截器的小例子

有一个接口如下: /**

  • 主调用接口 / public abstract class Client { public abstract void start(String say); } /*
  • 上述接口实现类 */ public class ClientImp extends Client { @Override public void start(String say) { System.out.println(say); } }

对此接口相关的转换器: /**

  • 用于包装Client到另一个Client */ public abstract class ForwardingClient extends Client{ //要包装的对象 protected abstract Client delegate();

    @Override public void start(String say) { delegate().start(say); } } /**

  • 一个简单的包装实现类,必须要传入要包装的对象 */ public class ForwardingClientImpl extends ForwardingClient{

    //被委托对象 private final Client client;

    public ForwardingClientImpl(Client client) { this.client = client; }

    @Override protected Client delegate() { return client; } }

然后在下列方法中调用: public class InterceptTest { public static void main(String[] args) { Client client = new ClientImp();//主要想执行的方法 //构造第一个拦截器 Client intercept1 = new ForwardingClientImpl(client){ @Override public void start(String say) { System.out.println("拦截器1"); super.start(say); } }; //构造第二个拦截器 Client intercept2 = new ForwardingClientImpl(intercept1){ @Override public void start(String say) { System.out.println("拦截器2"); super.start(say); } }; //执行主方法 intercept2.start("这是要执行的方法"); } }

毫无疑问会输出 拦截器2 拦截器1 这是要执行的方法

Morty Proxy This is a proxified and sanitized view of the page, visit original site.