首页 > 代码库 > 单例设计模式
单例设计模式
单例设计模式:一个类有且仅有一个实例,并且自行实例化向整个系统提供
要点:
一是某个类只能有一个实例——私有的构造方法;
二是它必须自行创建这个实例——指向自己实例的私有静态引用;
三是它必须自行向整个系统提供这个实例。——以自己实例为返回值的静态的公有的方法
单例模式根据实例化对象时机的不同分为两种:一种是饿汉式单例,一种是懒汉式单例。饿汉式单例在单例类被加载时,就实例化一个对象交给自己的引用;而懒汉式在调用取得实例方法的时候才去实例化对象。代码如下:
饿汉式
1 public class Singleton {2 private static Singleton singleton = new Singleton();3 private Singleton(){}4 public static Singleton getInstance() {5 return singleton;6 }
懒汉式
1 public class Singleton { 2 private static Singleton singleton; 3 private Singleton() {} 4 5 public static synchronized Singleton getInstance() { 6 if (singleton == null) { 7 singleton = new Singleton; 8 } 9 return singleton;10 }11 }
第三种格式
1 class Singleton {2 private Singleton() {}3 public static final Singleton singleton = new Singleton();4 }
优点:
在内存中只有一个对象,节省内存空间;
避免频繁的创建和销毁对象
可以在系统设置全局的访问点,优化和共享资源的访问,确保所有对象都访问唯一实例。
应用实例:
1 class Singleton { 2 private int num = 10; 3 private static Singleton singleton = new Singleton(); 4 private Singleton() {} 5 6 public static Singleton getInstance() { 7 return singleton; 8 } 9 public void setNum(int num) {10 this.num = num;11 }12 public int getNum() {13 return this.num;14 }15 }16 17 class SingletonDemo {18 public static void main(String[] args) {19 Singleton s = Singleton.getInstance();20 Singleton s1 = Singleton.getInstance();21 s.setNum(10);22 System.out.println(s.getNum());23 System.out.println(s1.getNum());24 }25 }
单例设计模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。