java设计模式之单例模式(创建型模式)
?
?
单列模式:
优点:1.节省资源,2.确保整个应用期类只有一个实列
缺点:1.扩展困难 ,2.隐式使用引起类结构不清晰,3.导致程序内存泄露的问题
什么情况不能使用单列模式:类想得到很好的扩展时,不能使用单例模式。?
什么情况下使用:1.调用连接数据库的时候(创建session的时候必须写成单例模式)
2.当某个对象会被频繁访问并且在多线程并发访问时没有线程安全性的问题时,
可以考虑使用单例工厂来完成这样的任务(系统只需要拥有一个的全局对象。比喻线程池,日志对象等等。)
3.读取配置文件的类用单例啊(读取propties文件)
4.什么情况下使用satatic方法(satic()方法跟单例模式的区别,分别在什么情况下使用?):如果某个方法是用频率较高,或者方法本身通用性较强,无需初始化类成员变量,则可以使用静态方法,那样方便,速度也快!
?
//懒汉:需要加锁才能实现多线程同步,但是效率会降低。优点是延时加载。package com.createtype.desginpatterns;public class LazySingleton {private static LazySingleton instance = null;private LazySingleton() {}public static synchronized LazySingleton getInstance() {if (instance == null) {instance = new LazySingleton();}return instance;}}package com.createtype.desginpatterns;/** * 饿汉模式 * 优点:因为加载类的时候就创建实例,所以线程安全(多个ClassLoader存在时例外)。 * 缺点:是不能延时加载。 * @author administrator * */ public class EagerSingleton { //饿汉模式: private static EagerSingleton instance = new EagerSingleton(); private EagerSingleton(){}; public static EagerSingleton getInstance(){ return instance; } }