首页 > 代码库 > java设计模式(一)单例模式
java设计模式(一)单例模式
单例模式保证系统中的类只有一个实例。单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。单例模式可以分为两种模式:饿汉模式、懒汉模式。
1、饿汉模式
public class EhanSingleton { //定义私有无参构造,防止通过new方式获取类实例 private EhanSingleton(){ } //创建类的唯一实例,使用private、static修饰,保证类加载及创建实例,所以称为饿汉模式 private static EhanSingleton ehanSingleton = new EhanSingleton(); //提供用于获取实例的方法 public static EhanSingleton getInstance(){ return ehanSingleton; } }
测试
public class test { public static void main(String[] args) { EhanSingleton e1 = EhanSingleton.getInstance(); EhanSingleton e2 = EhanSingleton.getInstance(); System.out.println(e1 == e2);//true,结果显示e1、e2为同一实例 } }
2、懒汉模式
public class LanhanSingleton { //定义私有无参构造,防止通过new方式获取类实例 private LanhanSingleton(){ } //声明类的唯一实例 private static LanhanSingleton lanhanSingleton; //提供用于获取实例的方法,当第一次获取时创建实例,所以称为懒汉模式 public static LanhanSingleton getInstance(){ if(lanhanSingleton == null) lanhanSingleton = new LanhanSingleton(); return lanhanSingleton; } }
测试
public class test { public static void main(String[] args) { LanhanSingleton l1 = LanhanSingleton.getInstance(); LanhanSingleton l2 = LanhanSingleton.getInstance(); System.out.println(l1 == l2);//true,结果显示l1、l2为同一实例 } }
3、饿汉模式、懒汉模式区别
1)饿汉模式在类加载时实例就被创建,故类加载时比较慢,但运行时获取速度快。懒汉模式则相反。
2)饿汉模式是线程安全的,懒汉模式是非线程安全的。
java设计模式(一)单例模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。