昨天巧合看到了单例设计模式,便一发不可收拾,记录一下。
首先推荐一篇博客,地址如下:
http://www.cnblogs.com/java-my-life/archive/2012/03/31/2425631.html#3641445
这是我看到单例设计模式写的最好的,文中介绍了饿汉式、懒汉式、DCL、类级内部类,最后说到了枚举内部类。真的写的很好,非常感谢作者!
看了大量的实现,最终看到了枚举内部类,这个是《effective java》中提到的,准备买了读一读,很早就听说了这本书,但是一直没买。
什么时候用单例呢?网上查了一下,都说连接池、线程池,什么资源管理器,回家后又把《大话设计模式》翻了出来,读了一下,里面是讲得图像化界面的工具箱,对于我来说,没有用了。
早上坐车,没事我就继续查,一直在用spring框架,对象都让他创建了,那个是单例么?
又温习了一下,spring 创建对象的三种方式,包括构造方法创建,静态方法创建,工厂方法创建,这些都是配置xml文档。
推荐阅读链接:http://www.cnblogs.com/LiuChunfu/p/5574383.html
不对啊,我一直在用注解啊?继续查。
@Autowired @Resource 原来 @Autowired 是 spring 的注解,而 @Resource 是JAVAEE 的注解,文章说为了避免耦合,建议使用 @Resource ,但是 spring 一定会使用啊,害怕耦合么?
继续翻,知道了通过注解创建的对象,默认用的是工厂方法,默认是单例的。
总结
单例,确保类只有一个实例,实现方式:
- 私有构造方法;
- 对外提供公共访问方法;
- 自己创建唯一对象。
使用 spring 框架,通过注解创建的 controller service dao 默认都是单例的。
以上,为个人记录,如有遗漏或错误,欢迎大家指教。