java设计模式- (1)单例模式

  参加校园招聘的笔试,发现公司都会考一些java设计模式,所以上网查询相关内容,总结常用的几种单例模式。

  单例模式(Singleton Pattern)是 Java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,
它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,
同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

(1)、懒汉式

public class SingleTon {

     private static Singleton instance;
  // 让构造函数为 private,这样该类就不会被实例化
private Singleton (){} public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } }

(2)、双重检验锁模式

public class SingleTon {

     private static SingleTon instance = null; 
     private  SingleTon() { } 
      //静态工程方法,创建实例 
      public static SingleTon getInstance() {
             if(instance == null) {
              synchronized (instance) {
                 if(instance == null)
                      instance = new SingleTon();
             }
             } 
        return instance;
     }
  //测试方法
  public void showMessage() {
    System.out.println("Hello World!");
  }


}


}            

(3)、饿汉式  推荐使用

public class SingleTon {

    private static final SingleTon instance = new SingleTon();
    private  SingleTon() { } 

    public static SingleTon getInstance() {
        return instance;
    }
}    

(4)、静态内部类  推荐使用

public class SingleTon { 
        private static class SingleTonHolder {  
            private static final SingleTon INSTANCE = new SingleTon();  
           }  
        private SingleTon (){}  
        public static final SingleTon getInstance() {  
            return SingleTonHolder.INSTANCE; 
        }  
}

测试:

public static void main(String[] args) {

        //不能实例化SingTon这个类
        // SingleTon singleTon = new SingleTon();
        
        //获取唯一可用的对象
        SingleTon singleTon =SingleTon.getInstance();
        singleTon.showMessage();
    }

新手若有不足之处,请多多指教。

作者:starryfeiii
出处:http://www.cnblogs.com/feiii/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,原文链接否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/feiii/p/6122496.html