zoukankan      html  css  js  c++  java
  • 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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,原文链接否则保留追究法律责任的权利。
  • 相关阅读:
    django第二个项目使用模板做一个站点访问计数器
    python 从ftp下载数据
    django第一个项目HelloWord
    数据挖掘之KNN分类
    java的函数参数传递
    将数组按照奇偶顺序排列
    win7 64位下安装nltk的问题
    [转]安装androidADT插件长时间停留在calculating requirements and dependencies
    排序算法之插入排序
    非等值折半查找
  • 原文地址:https://www.cnblogs.com/feiii/p/6122496.html
Copyright © 2011-2022 走看看