代理模式
来源:互联网 发布:淘宝互踩 编辑:程序博客网 时间:2024/05/29 13:21
调接口,可设计代理。代码如下:
public interface Person {String name = "liu";int age = 20;void print();}
import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;/** * 代理模式 :延迟加载减少系统开销或者aop * */public class proxyTest implements Person{private Person person;public proxyTest(Person person){this.person = person;}public void print() {if(person == null){this.person = new Children();}person.print();}public static void main(String[] args) throws InstantiationException, IllegalAccessException {//延迟加载new proxyTest(null).print();//我是小孩Person p = Student.class.newInstance();new proxyTest(p).print();//我是学生//-------AOPMyInvocatHandler handler = new MyInvocatHandler();Person stu = new Student();handler.setObject(stu);Person stu_proxy = (Person)Proxy.newProxyInstance(stu.getClass().getClassLoader(), stu.getClass().getInterfaces(), handler);stu_proxy.print();//输出beginging我是学生aftered}}class Children implements Person{public void print() {System.out.println("我是小孩");}}class Student implements Person{public void print() {System.out.println("我是学生");}}class TxUtil {void beginTx(){System.out.println("beginging");}void afterTx(){System.out.println("aftered");}}class MyInvocatHandler implements InvocationHandler{private Object obj;void setObject(Object obj){this.obj = obj;}public Object invoke(Object proxy, Method method, Object[] args)throws Throwable {TxUtil tx = new TxUtil();tx.beginTx();Object result = method.invoke(obj, args);tx.afterTx();return result;}}
0 0
- 代理模式--动态代理
- 代理模式-静态代理
- 代理模式-静态代理
- 代理模式 & 动态代理
- 代理模式--静态代理
- 代理模式--动态代理
- 代理模式(动态代理)
- 代理模式-动态代理
- 代理模式-动态代理
- 代理模式动态代理
- 代理模式-静态代理
- 代理模式-动态代理
- 代理模式 -动态代理
- 代理模式---动态代理
- 代理模式-动态代理
- 代理模式--静态代理
- 代理模式!
- 代理模式
- Service之断点续传(下载)
- js将字符串转换为一维二维数组
- OpenCV学习笔记_用指针操作图像元素
- 旋转方法
- 第三周项目三 输出图形
- 代理模式
- crontab——Linux 下的定时任务
- 泛型方法Demo
- 函数atof的功能及使用
- 缓存数据库Memcached
- dfs的技巧
- 自定义View实例——雨滴落下
- Leetcode:58. Length of Last Word(JAVA)
- Memcache---集群方案