首页 > 代码库 > 单例模式(Singleton)
单例模式(Singleton)
1.解决的问题:使得一个类只能够创建一个对象。
2.如何实现:
①私有化构造器,使得在类的外部不能调用该构造器
②在类的内部创建一个实例
③私有化该对象,通过公共的方法来调用(返回该对象)
④由于需要在类外部调用该方法(外部不能实例化该类对象),所以把该方法设置为static以便在类外部通过类名直接调用该方法,同时这个实例也应设置成静态(静态方法不能调用非静态的对象返回)
饿汉式
public class TestSingleton {
public static void main(String[] args) {
Singleton s1 = Singleton.getSingleton();
Singleton s2 = Singleton.getSingleton();
System.out.println(s1 == s2);// true
}
}
class Singleton {
private static Singleton s = new Singleton();
private Singleton() {
}
public static Singleton getSingleton() {
return s;
}
}
懒汉式 (延迟创建)可能存在线程安全问题,参见互斥锁
public class TestSingleton1 {
public static void main(String[] args) {
Singleton1 s1 = Singleton1.getSingleton();
Singleton1 s2 = Singleton1.getSingleton();
System.out.println(s1 == s2);// true
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
class Singleton1 {
private static Singleton1 s = null;
private Singleton1() {
}
public static Singleton1 getSingleton() {
if (s == null) {
s = new Singleton1();
}
return s;
}
}
更深的讨论:
http://www.barryzhang.com/archives/521
单例模式(Singleton)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。