单例模式
-
单例模式:保证一个类只有一个实例,并且提供一个访问该类的全局访问点
-
举例那些地方用到了单例模式:
windows的回收站、任务管理器;多线程的线程池:方便对线程池内的线程进行控制
-
优点:
-
在单例模式中,活动的单例只有一个实例,对单例类的所有实例化得到的都是相同的一个实例,确保了其他对象访问的都是一个实例;
-
提供了对唯一实例的受控访问;
-
在系统内存中只有一个实例,节约了系统资源,当频繁的创建和销毁对象时,单例模式提高了系统的效率
-
避免了对共享资源的多重占用;
-
-
缺点:
- 不适用多变的对象
- 单例类职责过重,一定程度违反单一职责原则
-
代码实例
- 饿汉单例:类初始化时就加载该对象,调用效率高,线程天生安全。
/* 饿汉单例 */ class Single{ //1.私有化类的构造 private Single(){ } //2.声明当前类对象,没初始化 //4.此对象也必须为静态static的 private static Single instance = null; static { instance = new Single(); } //3.声明public、static的返回当前对象的方法 public static Single getInstance(){ return instance; } }- 懒汉单例:类初始化时不会初始化该对象,使用的时候才会创建该对象,具备懒加载功能
/* 懒汉单例 */ class LazySingle{ private LazySingle(){ } private static LazySingle instance = null; public static LazySingle getInstance(){ if(instance==null){ synchronized(LazySingle.class){//同步锁 if(instance==null){ instance = new LazySingle(); } } } return instance; } }

浙公网安备 33010602011771号