zoukankan      html  css  js  c++  java
  • 单例模式

    (参考:http://blog.csdn.net/lanzhizhuxia/article/details/7920556,http://www.cnblogs.com/java-my-life/archive/2012/03/31/2425631.html)

    单例模式的特点:
    单例类只能有一个实例。
    单例类必须自己创建自己的唯一实例。
    单例类必须给所有其他对象提供这一实例。


    饿汉式其实是一种比较形象的称谓。既然饿,那么在创建对象实例的时候就比较着急,饿了嘛,于是在装载类的时候就创建对象实例。
    懒汉式其实是一种比较形象的称谓。既然懒,那么在创建对象实例的时候就不着急。会一直等到马上要使用对象实例的时候才会创建,懒人嘛,总是推脱不开的时候才会真正去执行工作,因此在装载对象的时候不创建对象实例。
    /**
     * Project Name:DesignPatterns
     * File Name:EagerSingleton.java
     * Package Name:com.louis.singlePattern
     * Date:2017年9月26日下午8:36:37
     * Copyright (c) 2017, 2692613726@qq.com All Rights Reserved.
     *
    */
    
    package com.louis.singlePattern;
    /**
     * ClassName:EagerSingleton 
     * Function:  饿汉式是典型的空间换时间,当类装载的时候就会创建类的实例,不管你用不用,先创建出来,
     *                 然后每次调用的时候,就不需要再判断,节省了运行时间
     * Reason:     TODO ADD REASON. 
     * Date:     2017年9月26日 下午8:36:37 
     * @author   michael
     * @version  
     * @since    JDK 1.7
     * @see      
     */
    public class EagerSingleton {
        //设置静态变量,直接创建实例
        public static EagerSingleton eagerSingleton = new EagerSingleton();
        
        /**
         * 私有构造方法
         *
         */
        private  EagerSingleton() {
            System.out.println("调用私有构造方法");
        }
        //开放一个共有方法
        public static EagerSingleton getInstance(){
            System.out.println("返回实例");
            return eagerSingleton;
        }
        
    }

    /**
     * Project Name:DesignPatterns
     * File Name:LazySingleton.java
     * Package Name:com.louis.singlePattern
     * Date:2017年9月26日下午8:51:15
     * Copyright (c) 2017, 2692613726@qq.com All Rights Reserved.
     *
    */
    
    package com.louis.singlePattern;
    
    import javax.management.InstanceAlreadyExistsException;
    
    /**
     * ClassName:LazySingleton 
     * Function: TODO ADD FUNCTION. 
     * Reason:     TODO ADD REASON. 
     * Date:     2017年9月26日 下午8:51:15 
     * @author   michael
     * @version  
     * @since    JDK 1.7
     * @see      
     */
    public class LazySingleton {
        //静态变量
        public static LazySingleton lazySingleton = null;
        //私有构造函数
        private LazySingleton(){
            System.out.println("调用构造函数");
        }
        /*
         * 静态工厂方法
         * */
        public static synchronized LazySingleton getInstance(){
            if(lazySingleton == null){
                lazySingleton = new LazySingleton();
                System.out.println("创建实例");
            }
            System.out.println("返回实例");
            return lazySingleton;
        }
        
        
    }

    /**
     * Project Name:DesignPatterns
     * File Name:MainSingle.java
     * Package Name:com.louis.singlePattern
     * Date:2017年9月26日下午8:41:12
     * Copyright (c) 2017, 2692613726@qq.com All Rights Reserved.
     *
    */
    
    package com.louis.singlePattern;
    /**
     * ClassName:MainSingle 
     * Function: TODO ADD FUNCTION. 
     * Reason:     TODO ADD REASON. 
     * Date:     2017年9月26日 下午8:41:12 
     * @author   michael
     * @version  
     * @since    JDK 1.7
     * @see      
     */
    public class MainSingle {
    /*    public static void main(String[] args) {
            EagerSingleton eagerSingleton = EagerSingleton.getInstance();
            EagerSingleton eagerSingleton2 = EagerSingleton.getInstance();
            if(eagerSingleton==eagerSingleton2){
                System.out.println("是同一个实例");
            }
        }
        */
        public static void main(String[] args) {
            LazySingleton lazySingleton = LazySingleton.getInstance();
            LazySingleton lazySingleton2 = lazySingleton.getInstance();
            if(lazySingleton==lazySingleton2){
                System.out.println("是同一个实例");
            }
        }
    }
  • 相关阅读:
    P2639 [USACO09OCT]Bessie的体重问题Bessie's We…
    P2871 [USACO07DEC]手链Charm Bracelet
    P1983 车站分级
    P1038 神经网络
    P1991 无线通讯网
    P1546 最短网络 Agri-Net
    P1197 [JSOI2008]星球大战
    P1004 方格取数
    P1111 修复公路
    pd_ds 之 hash
  • 原文地址:https://www.cnblogs.com/Michael2397/p/7580679.html
Copyright © 2011-2022 走看看