• 单例模式(懒汉,饿汉)


    Java中的单例模式一般分为懒汉模式和饿汉模式,懒汉模式只有用得到的时候对象才初始化,饿汉模式无论用得到与否,都先初始化。

    懒汉模式在运行的时候获取对象比较慢(因为类加载时并没有创建对象实例),但是加载类的时候比较快(因为此时不创建对象实例),饿汉模式是在运行的时候获取对象快(因为加载类时就创建了实例对象),加载类的时候慢(此时还需要创建实例对象)。

    单例模式的应用场合,有些对象只需要一个的时候。

    作用:保证整个应用程序中某个实例有且只有一个。

    饿汉模式:

    class SingletonDemo{
        /**
        *单例饿汉模式
        */
    
        //在单例类的内部声明一个自己本身的对象,并且初始化
        private static SingletonDemo s = new SingletonDemo();
        //私有化构造器
        private SingletonDemo(){
            
            }
            
        //获得单例的对象,必须static,不然无法调用该方法
        public static SingletonDemo getSingletonDemo(){
            return s;
            }
        public void eat(){
            System.out.println("在吃饭");
            }
        
        }
        
    class TestSingletonDemo{
        public static void main(String[] args){
            //使用类名调用get方法得到在单例类内部所创建的对象
            /**使用类名时要确保get方法是static类方法,才可以使用类名调用方法,
            *使用类名调用方法,那就要调用类属性,也要是static修饰的属性
            */
            SingletonDemo s1 = SingletonDemo.getSingletonDemo();
            s1.eat();
            System.out.println(s1);
            
            SingletonDemo s2 = SingletonDemo.getSingletonDemo();
            s2.eat();
            System.out.println(s2);
            
            SingletonDemo s3 = SingletonDemo.getSingletonDemo();
            s3.eat();
            System.out.println(s3);
            
            }
        }

    单例懒汉模式:

    class Singleton{
        /**
        *懒汉模式
        */
        //将构造方法私有化,不允许外面直接创建对象
         private Singleton(){
             }
        //声明类的唯一对象,使用private static
        private static Singleton s;
        //给外部提供一个可以获得对象的方法,使用public static
        public static Singleton getSingleton(){
            if(s == null){
                s = new Singleton();
                }
            return s;
            }
    }
    
    
    class TestSingle{
        public static void main(String [] args){
            Singleton s = Singleton.getSingleton();
            System.out.println(s);
            
            
            Singleton s1 = Singleton.getSingleton();
            System.out.println(s1);
            
            
            Singleton s2 = Singleton.getSingleton();
            System.out.println(s2);
            
            
        }
        
    }
  • 相关阅读:
    宅急送
    网站迁移主要工作完成
    服务器迁移后性能提升很明显
    Vista修改默认字体
    服务器迁移预告
    Silverlight 2 和 Deep Zoom
    Mix 08到来之前的Monolight Update
    ASP.NET MVC Preview生命周期分析
    Windows Server 2008 与 .NET Framework 的版本之间有什么关系
    Silverlight 2 DispatcherTimer和通过XAML创建UI元素
  • 原文地址:https://www.cnblogs.com/chenttc/p/7746179.html
Copyright © 2020-2023  润新知