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/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,原文链接否则保留追究法律责任的权利。
  • 相关阅读:
    Opencv+C++之身份证识别(一)
    Opencv 提取图像中的矩形区域
    Opencv+C++之人脸识别二
    Perl 中的正则表达式
    Convert asio::streambuf to std::string
    WM_IDLEUPDATECMDUI与CView
    使用Boost的Regex库
    字符串编码方式的趣味介绍
    转: 20100711小强热线曝本田CRV、日产逍客没有车尾防撞钢梁(片子前面是所有车型回顾)
    对话框使用ON_UPDATE_COMMAND_UI(转)
  • 原文地址:https://www.cnblogs.com/feiii/p/6122496.html
Copyright © 2011-2022 走看看