策略模式之单例模式
将类的构造器私有化,然后提供⼀个返回值,供其他类实例化对象,这样实例化的对象就只能有⼀个对象。⼀个类,⼀个 JVM 中,就只有⼀个实例存在。
⼤体思路:
1. 将构造器私有化;
2. 将提供的调⽤的静态值指向实例;
3. 返回静态属性
代码:通过将 Earth 类的构造器私有化,其他类就不能访问这个构造器,只能通过 Earth 类中⾃⼰提供的变量或者⽅法调⽤,这样其他类在实例化 Earth 类的时候,实例化的对象就只能是⼀个。
public class Earth {
String name;
int year;
private Earth() {}
public static Earth earth = new Earth();
}
public class test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Earth e1 = Earth.earth;
Earth e2 = Earth.earth;
System.out.println(e1==e2);
}
}
上⾯的属于 饿汉式 单利模式,⽆论是否被调⽤,都会被加载,⽽ 懒汉式 只是需要的时候才进⾏加载,下⾯是 懒汉式 的单例模式。
public class Earth {
String name;
int year;
private Earth() {}
public static Earth earth;
public static Earth getEarth() {
if(earth == null) {
earth = new Earth();
}
return earth;
实例化类和实例化对象}
}
public class test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Earth e1 = Earth.earth;
Earth e2 = Earth();
System.out.println(e1==e2);
}
}
上⾯的例⼦输出 false,因为懒汉式的只是需要的时候才加载,如果将 e1 改成和 e2 ⼀样的话,则会输出 true。如果业务有⽐较充分的启动时间和加载时间就使⽤ 饿汉模式,否则的话就使⽤ 懒汉模式.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论