public class singleton {
//2.声明本类类型的引用指向本类类型的对象
private static singleton sin = new singleton();
// 1.私有化构造方法,使用private关键字修饰
private singleton() {
}
public static singleton getInstance() {
return sin;
}
public static void main(String[] args) {
singleton single = new singleton();
singleton single2 = new singleton();
}
}
如何使用这个单例
public class test {
{
System.out.print("构造块");
}
static {
System.out.print("静态代码块");
}
test() {
System.out.print("构造函数");
}
public static void main(String[] args) {
singleton s1 = singleton.getInstance();
singleton s2 = singleton.getInstance();
if (s1 == s2) {
System.out.print("yes"); // 最后代码走进了这里,说明两个类是同一个对象
}
}
}
饿汉模式
public class singleton {
//2.声明本类类型的引用指向本类类型的对象
private static singleton sin = new singleton();
// 1.私有化构造方法,使用private关键字修饰
private singleton() {
}
public static singleton getInstance() {
return sin;
}
public static void main(String[] args) {
singleton single = new singleton();
singleton single2 = new singleton();
}
}
饿汉模式:意思就是上来就创建对象
private static singleton sin = new singleton();
而懒汉模式呢,是需要的时候,再创建对象,代码如下
public class singleton {
//2.声明本类类型的引用指向本类类型的对象
// private static singleton sin = new singleton();
private static singleton sin = null;
// 1.私有化构造方法,使用private关键字修饰
private singleton() {
}
public static singleton getInstance() {
if (sin == null) {
sin = new singleton();
}
return sin;
}
public static void main(String[] args) {
singleton single = new singleton();
singleton single2 = new singleton();
}
}
这个就是懒汉模式,private static singleton sin = null; sin这个对象一开始并不会初始化,而是在调用方法的时候,才会创建第一个也唯一的一个对象,
在一般开发中,我们比较推荐使用饿汉模式,考虑到多线程访问的问题。
网友评论