首页 / 设计模式 / 设计模式之代理模式笔记
设计模式之代理模式笔记
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计模式之代理模式笔记,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1397字,纯文字阅读大概需要2分钟。
内容图文
原文地址:点我
关键点:
静态代理:
实现被代理类的接口
构造注入
动态代理
reflect 高级码农必须深入理解的
扩展知识点 class.forname 使用这个不会产生新的实例, 只是为了加载 链接 初始化(静态)
我们大家一直用的spring 其中强大的功能aop就是基于这
注意点:
动态代理有个强制性要求 被代理的类必须时间了某一个接口, 或者本身就是接口(这个接口的实现类非必要)
三步骤
构造注入
实现invoke
获取代理实例 参数 类加载器 class对象的数组 当前对象
接口如果没有实现直接使用method.invoke()会报以下错误,
IllegalArgumentException: object is not an instance of declaring class
就是意译
文中指出可以突破这种限制
大意就是用注入的对象获取该class对象所表示的类或者接口指定已声明的方面,
其中需要注意的是setAccessible() 设置值 也就是被private修饰的成员变量或者方法是否可以被调用
值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。
源码解析 代理对象的获取 Proxy.newProxyInstance(类加载器,对象集合,代理对象)
对象的获取:
getProxyClass(加载器, 接口集合)
版本1.7
①65535长度限制
②expungeStaleEntries() 删除陈旧的实类
③CacheKey.valueOf(key, refquce){知识点传送门}
简单总结下 Java对象的强、软、弱和虚引用
强引用: 强可及对象, A a =new A();
软引用: A a =new A(); B b = new B(a); A a1 = b.getA();
弱引用: 配合WeakReference 使用 一旦 软引用级别及以上的应用被赋值为null, 手动调用gc, 能够立即回收
虚引用: PhantomReference, 形态虚设 , 其中的get方法是无法获取到地址的
补充: q: 匿名类属于哪种引用? a:测试下来应该是属于弱引用, 是真实存在的, 类似的操作 , list.add(new A()); list.remove[index], System.gc(); 用完就回收了
④ConcurrentMap 线程安全的集合 使用的是子类hashmap putIfAbsent 方法 类似 if(!map.containsKey(key)){return map.put(key,value)}else{ return map.get(key)}
⑤
5.1supplier 生产者
5.2.1如果不存在 创建工厂 5.0.1如果生产存在, 但没有 value
5.2.2对生存者赋值 5.0.2创建工厂
5.0.3 替换replace value 成功后对生产者赋值 否则 get
生成的代理类 extend Proxy implements 代理的对象
其中就是调用invoke
原文:http://www.cnblogs.com/denghailei/p/6347669.html
内容总结
以上是互联网集市为您收集整理的设计模式之代理模式笔记全部内容,希望文章能够帮你解决设计模式之代理模式笔记所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。