public class Singleton{
private static Singleton instance = new Singleton();
private Singleton(){}
public static Singleton getInstance(){
return instance;
}
}
public class Singleton{
private static Singleton instance = null;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null){
return new Singleton();
}
return instance;
}
}
public class Singleton{
private static Singleton instance = null;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null){
synchronized(Singleton.class){
if(instance == null){
return new Singleton();
}
}
}
return instance;
}
}
public class Singleton{
private static class SingletonFactory{
private static Singleton INSTANCE = new Singleton();
}
private Singleton(){}
public static Singleton getInstance(){
return SingletonFactory.INSTANCE;
}
}
enum Singleton{
INSTANCE;
public void doSomething(){
...
}
}
/**
*通过反射破坏单例模式
*/
public class Demo01 {
public static void main(String[] args) throws Exception {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1 == s2);
Class<Singleton> clazz = (Class<Singleton>) Class.forName("com.singleton.Singleton");
Constructor<Singleton> constructor = clazz.getDeclaredConstructor(null);
constructor.setAccessible(true);
Singleton s3 = constructor.newInstance();
System.out.println(s1 == s3);
}
}
class Singleton{
private static Singleton instance = new Singleton();
private Singleton(){
//防止反射破坏单利模式的方法,打开注释部分
// if(instance != null){
// throw new RuntimeException();
// }
}
public static Singleton getInstance(){
return instance;
}
}
/**
* 反序列化打破单例模式
*/
public class Demo02 {
public static void main(String[] args) throws Exception {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1 == s2);
FileOutputStream fos = new FileOutputStream("d://test.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(s1);
oos.close();
fos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d://test.txt"));
Singleton s3 = (Singleton) ois.readObject();
System.out.println(s1 == s3);
}
}
class Singleton implements Serializable{
private static Singleton instance = new Singleton();
public static Singleton getInstance(){
return instance;
}
//反序列化时,如果对象已经存在,将调用这个方法
// private Object readResolve() throws ObjectStreamException{
// return instance;
//
// }
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有