单例模式

设计模式之代理模式

何为代理模式?代理,顾名思义可联想到代理人,代理人是干啥子的,帮别人做某件事的,且可能会根据一些具体的情况,做一些具体的处理。大概如此吧。 定义与作用 它提供了对目标对象另外的访问方式;即通过代理对象访问目标对象。代理对象是对目标对象的扩展,并会调用目标对象。 好处:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 实现 静态代理 简而言之,就是代理对象与被代理对象都实现同一接口,在代理对象中,调用被代理对象的相应方法,并加上一些自定义的其它操作,要使用被代理对象的方法时,只需要调用代理对象的相应方法即可。 缺点:如果增加接口中的方法,那么代理对象以及被代理对象都需要进行相应的修改,难以维护。 动态代理 不需要实现接口,利用JDK的API,在内存中动态地创建代理对象。代理对象不需要实现接口,但是被代理对象一定要实现接口,否则不能用动态代理。 代理类所在包:java.lang.reflect.ProxyJDK实现代理只需要使用newProxyInstance方法,但是该方法需要接收三个参数,完整的写法是: static Object new

单例模式

有很多关于单例模式的博客,书上也有些介绍,了解它也算挺久了。但是部觉得少了点什么,怕自己记了,也怕自己后面找起来麻烦,所以还是写一篇博客来记录一下吧。 单例模式的概念 我的认识是这样,可能不是非常标准,一点自己的想法,不想copy而已: 1. 只有一个实例 2. 构造方法为private, 无法被直接实例化;类中持有一个本类的静态私有对象,并提供静态方法给外界提供访问。 实现方式 不同的方式有不同应用场景,可以按需要选择。其实我还是有个小小的疑问,就是关于饿汉式,instance实例化的时机是当前类被引用的时候,可以认为是在调用getInstance()的时候 ,此时类中的变量按照相应的初始化顺序,依次初始化。这样的话,就和懒汉式的效果是一样的了=.=可能是我的想法不太对吧 饿汉式 即初始化类的时候就创建好实例,不用担心多线程的环境下出现问题,但是有可能浪费资源。 public class SingletonHangry { private static SingletonHangry instance; private SingletonHan