首页 > 代码库 > [设计模式]暂时不考虑多线程的单例模式

[设计模式]暂时不考虑多线程的单例模式

饿汉式单例模式:

 1 package cn.itcast.singleton; 2     /* 3     最简单的设计模式就是单例模式  4     单个实例的模式,一个类只能生成一个对象, 5     new或者其他方式最后只能生成一个对象,不能再生成新的对象. 6     */ 7 public class SingletonTest { 8     public static void main(String[] args) { 9         Singleton singleton = Singleton.getInstance();10         Singleton singleton2 = Singleton.getInstance();11         //判断生成的对象是否是一个对象.12         System.out.println(singleton==singleton2);13     }14 }15 class Singleton{16     //在Singleton类中声明一个对象.然后在类中向外提供一个得到这个对象的方法17     //下面的getInstance()方法是static类型的.要调用的也必须是static类型的.18     private static Singleton singleton = new Singleton();19     20     //单例类Singleton中的构造方法必须是private,不能让外部访问该构造方法.否则无法实现单例模式21     private Singleton(){22         23     }24     //这个getInstance()方法必须是static静态的方法,因为这个方法是一个实例方法.25     //外部调用实例方法通过该类的对象来调用,但是外部因为该类的构造方法是private的无法得到该类对象26     //所以要声明成static静态的方法,通过类名来调用这个实例方法.27     public static Singleton getInstance(){28         return singleton;29     }30 }31     /*32     这种方式(饿汉式)是你在你没有调用Singleton的时候也生成一个singleton对象了.33     这种是一定是单例的,第二种(懒汉式)在多线程的情况下可能不是单例的.34     */

懒汉式单例模式

 1 package cn.itcast.singleton2; 2     /* 3     最简单的设计模式就是单例模式  4     单个实例的模式,一个类只能生成一个对象, 5     new或者其他方式最后只能生成一个对象,不能再生成新的对象. 6     */ 7 public class SingletonTest { 8     public static void main(String[] args) { 9         Singleton singleton = Singleton.getInstance();10         Singleton singleton2 = Singleton.getInstance();11         //判断生成的对象是否是一个对象.12         System.out.println(singleton==singleton2);13     }14 }15 class Singleton{16     //在Singleton类中声明一个对象.然后在类中向外提供一个得到这个对象的方法17     //下面的getInstance()方法是static类型的.要调用的也必须是static类型的.18     private static Singleton singleton;19     //这个地方先不赋值,不赋值肯定不对,就要在你调用getInstance()方法的时候判断这个singleton对象是否为空.20     21     //单例类Singleton中的构造方法必须是private,不能让外部访问该构造方法.否则无法实现单例模式22     private Singleton(){23         24     }25     //这个getInstance()方法必须是static静态的方法,因为这个方法是一个实例方法.26     //外部调用实例方法通过该类的对象来调用,但是外部因为该类的构造方法是private的无法得到该类对象27     //所以要声明成static静态的方法,通过类名来调用这个实例方法.28     public static Singleton getInstance(){29         if(singleton == null){30             singleton = new Singleton();31         }32         return singleton;33     }34 }

 ============================华丽丽的分割线====================================

[设计模式]暂时不考虑多线程的单例模式