Linux日志:rsyslog及loganalyzer(一)
2015-06-19 11:37
501 查看
一. 静态代理
1. Subject.java
2. RealSubject.java
3. ProxySubject.java
4. Client.java
二. 动态代理
1. Subject.java
2. RealSubject.java
3. ProxySubject.java
4. Client.java
1. Subject.java
package com.test; public abstract class Subject { public abstract void request(); }
2. RealSubject.java
package com.test; public class RealSubject extends Subject { @Override public void request() { System.out.println("real subject"); } }
3. ProxySubject.java
package com.test; public class ProxySubject extends Subject { private RealSubject realSubject; @Override public void request() { this.PreRequest(); if(realSubject==null){ realSubject=new RealSubject(); } realSubject.request(); this.PostRequest(); } private void PreRequest(){ System.out.println("pre request"); } private void PostRequest(){ System.out.println("post request"); } }
4. Client.java
package com.test; public class Client { /** * @param args */ public static void main(String[] args) { Subject proxy=new ProxySubject(); proxy.request(); } }
二. 动态代理
1. Subject.java
package com.test.dynamicproxy; public interface Subject { public void request(); }
2. RealSubject.java
package com.test.dynamicproxy; public class RealSubject implements Subject { @Override public void request() { System.out.println("from real subject"); } }
3. ProxySubject.java
package com.test.dynamicproxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; public class ProxySubject implements InvocationHandler { private Object object; public ProxySubject(Object object){ this.object=object; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("pre process"); method.invoke(object, args); System.out.println("post process"); return null; } }
4. Client.java
package com.test.dynamicproxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; public class Client { /** * @param args */ public static void main(String[] args) { RealSubject realSubject=new RealSubject(); InvocationHandler handler=new ProxySubject(realSubject); Class<?> clz=realSubject.getClass(); Subject subject=(Subject)Proxy.newProxyInstance(clz.getClassLoader(), clz.getInterfaces(), handler); subject.request(); } }
相关文章推荐
- 理解Linux系统中的load average(图文版)
- Linux rsync 同步实践
- 从Linux看系统IO
- linux 配置放火墙端口
- LINUX 进程组 会话
- (笔记)Linux Socket通信:bind: Address already in use
- Linux 守护进程的编程方法
- linux下mysql命令大全
- 在Linux下产生并调试core文件 先看看我用的是个什么机器: $ uname -a Linux dev 2.4.21-9.30AXsmp #1 SMP Wed May 26 23:37:09 E
- Linux_3.4_库函数方式文件编程
- Linux的五个查找命令
- Linux 内核之中断
- 鸟哥的Linux私房菜 读书笔记
- linux发送邮件和附件---mail,mailx
- linux下用vim编写C/C++单个源程序的基本方法
- usr/bin/ld: cannot find 错误解决方法
- linux上的语音识别程序
- linux下eclipse交叉开发环境搭建
- centos安装flashplayer
- Linux入门问题解决——2015.06.19