设计模式一之单例模式 博客分类: 设计模式 设计模式javasingleton
程序员文章站
2024-03-24 08:16:04
...
一直想总结一下设计模式,因为设计模式是个抽象的东西,非常容易遗忘,只要不断的总结才能深入了解它们,下面我就从简单的单例模式开始总结吧!
在一些项目中,我经常看到一些人乱用单例模式,或者用的不好。单例模式有以下特点:
1,单例类有且只有一个自身向其他对象提供的实例。
2,单例对象必须自己创建这个实例。
单例类一般有两种写法:
1,饿汉式:
二:懒汉式
总结:饿汉和懒汉各有优点。饿汉式在自己被加载时就已经实例化了,而懒汉式则在第一次调用它的实例化方法时才会实例化。饿汉式是以空间换时间,懒汉式是以时间换空间。编程时一般我喜欢用饿汉式,不光是因为饿汉式简单,还由于饿汉更适合java。
在一些项目中,我经常看到一些人乱用单例模式,或者用的不好。单例模式有以下特点:
1,单例类有且只有一个自身向其他对象提供的实例。
2,单例对象必须自己创建这个实例。
单例类一般有两种写法:
1,饿汉式:
package singleton; public class Singleton { /** * 饿汉式获取对象实例 */ private static Singleton instance = new Singleton(); /** * 私有构造子 */ private Singleton(){ } /** * 外部对象唯一获取示例的方法 * @return */ public static Singleton getInstance(){ return instance; } /** * @param args */ public static void main(String[] args) { Singleton instance = Singleton.getInstance(); } }
二:懒汉式
package singleton; public class LazySingleton { private static LazySingleton instance = null; /** * 私有构造子 */ private LazySingleton(){ } /** * 外部对象唯一获取示例的方法 * 此处用synchronized来防止多线程环境下对象被多次实例化的情况 * @return */ public synchronized static LazySingleton getInstance(){ if(instance==null) instance = new LazySingleton(); return instance; } /** * @param args */ public static void main(String[] args) { LazySingleton instance = LazySingleton.getInstance(); } }
总结:饿汉和懒汉各有优点。饿汉式在自己被加载时就已经实例化了,而懒汉式则在第一次调用它的实例化方法时才会实例化。饿汉式是以空间换时间,懒汉式是以时间换空间。编程时一般我喜欢用饿汉式,不光是因为饿汉式简单,还由于饿汉更适合java。
推荐阅读
-
设计模式之策略模式 博客分类: 设计模式 策略模式strategy
-
设计模式之策略模式 博客分类: 设计模式 策略模式strategy
-
设计模式一之单例模式 博客分类: 设计模式 设计模式javasingleton
-
JAVA书籍推荐 博客分类: 工作日志 java编程设计模式企业应用ejb
-
JAVA书籍推荐 博客分类: 工作日志 java编程设计模式企业应用ejb
-
门户网站运维abc 博客分类: 网站架构 网络应用应用服务器企业应用设计模式网络协议
-
大型网站运维探讨和心得 博客分类: 网站架构 网络应用应用服务器企业应用设计模式互联网
-
erlang的优秀之处 博客分类: tech ErlangHaskellPythonCouchDB设计模式
-
[转载] Memcache mutex设计模式 博客分类: web 开发 设计模式Cachememcached.net
-
设计模式 博客分类: JAVA 设计模式算法框架Bean数据结构