摘要:
不仅知其然,还得知其所以然。既然JDK 动态代理功能如此强大,那么他是如何实现的呢? 我么都知道 JDK 动态代理采用字节重组,重组生成对象来替代原始对象,以达到动态代理的目的。JDK 动态代理生成对象的步骤如下: (1)获取被代理对象的引用,并且获取他的所有接口,反射获取。 (2)JDK 动态代理 阅读全文
摘要:
动态代理和静态代理的基本思路是一致的,只不过动态代理的功能更加强大,随着业务的扩展适应更强大。如果还以找对象为例,那么使用动态代理相当于能够适应复杂的业务场景。不仅包括父亲给儿子找对象,如果找对象这项业务发展成了一个产业,出现了媒婆、婚介所等,那么用静态代理成本太高了,需要一个更加通用的解决方案,满 阅读全文
摘要:
代理模式应用场景: 生活中的租房中介、售票黄牛、婚介、经纪人、快递、事物代理、非侵入式日志监听等,都属于是代理模式的实际体现、代理模式(proxy Pattern)的定义也非常简单,是指为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和目标对象之间祈祷中介作用,代理式属于结构型设计模 阅读全文
摘要:
原型模式主要使用与以下场景: (1)类初始化消耗资源较多。 (2)使用 new 生成一个对象需要非常繁琐的过程(数据准备、访问权限等)。 (3)构造函数比较复杂。 (4)在循环体中产生大量对象。 在 spring 中,原型模式应用的非常广泛。例如 scope="prototype" ,我们常用的JS 阅读全文
摘要:
引言 序列化破坏单例:一个单例对象创建好后,有时候需要将对象序列化后写入磁盘,下次使用时再从磁盘中读取对象并进行反序列化,将其转化为内存对象。反序列化后的对象将会重新分配内存,即重新创建。如果序列化的目标对象为单例对象,就违背了单例模式的初衷,相当于破坏了单例,看如下代码。 public class 阅读全文
摘要:
单例模式的应用场景 单例模式(Singleton Pattern)是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式。单例模式在现实生活中应用也十分广泛。 恶汉单例模式 恶汉单例模式狮子啊类加载的时候就立即初始化,并且创建单例对象,它绝对的线程安全,在线程还没有 阅读全文