您现在的位置是:首页 >

写一个单例模式 Java单例模式实现

火烧 2022-06-18 15:25:25 1053
Java单例模式实现   单例模式  Q :什么是单例模式呢?  A :单例模式确保某个类只有一个实例 大家想用这个类的对象的时候 只能拿到一个共同的实例 单例类要自行创建实例   Q :为什么要用到

Java单例模式实现  

  单例模式

  Q :什么是单例模式呢?

  A :单例模式确保某个类只有一个实例 大家想用这个类的对象的时候 只能拿到一个共同的实例 单例类要自行创建实例

  Q :为什么要用到单例模式?

  A :如果有一个复杂的类 我们总要使用它的对象 那我们岂不是总要new这个对象 这样 会消耗我们的内存 所以我们要选用单例模式

  下面通过一个简单的例子说明单例模式的实现方法

   //普通的类 通过new来创建新的对象 每次创建都会得到不同的实例

   public class SingletonDemo {

   //构造方法

   public SingletonDemo (){}

  

   //普通方法

   public void singleLove(){

   System out println( Persist for you! )

     }

   }

  

  

  

  

  

   //使用第一种方式的单例模式类 通过公共属性来创建对象

   public class SingletonDemo {

      //第一种实现单例模式的方法 通过公共属性来实现实例化

     //声明一个公共的静态属性 使只被实例化一次

     public static final SingletonDemo singletonDemo = new SingletonDemo ()

  

      //声明一个私有的构造方法 使别人不能随便new对象

       private SingletonDemo (){}

  

      //普通的方法

       public void singleLove(){

       System out println( Always persist for you! )

       }

   }

  

  

  

  

  

   //使用第二种方式的单例模式类 通过 getInstance()来创建对象

   public class SingletonDemo {

      //第二种实现单例模式的方法 通过方法来实现实例化

     //声明一个私有的静态属性 使只被实例化一次

      private static final SingletonDemo singletonDemo = new SingletonDemo ()

    

  //声明一个私有的构造方法 使别人不能随便new对象

  //它只被调用一次 实例存在之后就不再调用了

  private SingletonDemo (){}  

  //声明一个公共的静态方法 外界通过调用这个方法来得到唯一的实例

  public static SingletonDemo getInstance(){

  return singletonDemo;

  }

  

  //普通的方法

  public void singleLove(){

  System out println( Persist for you always! )

  } }  

    

     public class Test{     //测试方法   public static void main(String[] args){  

  //测试

  SingletonDemo singleton = new SingletonDemo ()

  singleton singleLove()

  

  SingletonDemo singleton = new SingletonDemo ()

  singleton singleLove()

  

  boolean flag = singleton equals(singleton )

  System out println( 用equals的方法来判断 )  

  System out println( 此时的flag= + flag)

  

  if(flag){

  

  System out println( 他们的内存地址是一样的哦 这说明他们是同一个实例 实现了单例模式! )

  }else{

  System out println( 他们的内存地址不一样 则说明他们是不同的实例 )

  }

  

    

  //测试

  SingletonDemo singleton = SingletonDemo singletonDemo;

  singleton singleLove()

  

  SingletonDemo singleton = SingletonDemo singletonDemo;

  singleton singleLove()

  

  int addr = singleton hashCode()

  int addr = singleton hashCode()

写一个单例模式 Java单例模式实现

  System out println( 用hashCode来判断 )

  if(addr == addr ){

  System out println( 内存地址是一样的哦 则说明他们是同一个实例 实现了单例模式 )

  }else{

  System out println( 他们的内存地址不一样 则说明他们是不同的实例 )

  }  

  //测试

  SingletonDemo single = SingletonDemo getInstance()

  single singleLove()  

  SingletonDemo single = SingletonDemo getInstance()

  single singleLove()  

  boolean flag = single equals(single )

  System out println( 用equals来判断 )

  System out println( 此时的flag= + flag )

  

  if(flag ){

  System out println( 内存地址是一样的哦 则说明他们是同一个实例 实现了单例模式 )

  }else{

  System out println( 他们的内存地址不一样 则说明他们是不同的实例 )

  }

  } }

lishixinzhi/Article/program/Java/hx/201311/26571  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码