zoukankan      html  css  js  c++  java
  • 面试题6,单例模式等等。24种设计模式。

    singleton单例模式是java中最简单的设计模式之一。这种类型的设计模式属于创建模式,因为此模式提供了创建对象的最佳方法之一。

    这种模式涉及一个类,他负责创建一个对象,同时确保只创建一个对象。这个类提供了一种方法来访问它的唯一对象,可以直接访问,而不需要实例化。

    饿汉式:

    public class SingleObject {
    
        private static SingleObject instance = new SingleObject();
    
        private SingleObject(){}
    
        public static SingleObject getInstance(){
            return instance;
        }
    
        public void showMessage(){
            System.out.println("Hello World!");
        }
    }
    public class SingletonPatternDemo {
    
        public static void main(String[] args) {
            SingleObject object = SingleObject.getInstance();
            object.showMessage();
        }
    }

    懒汉式:

    public class SingleObject {
        // 静态实例变量
        private static SingleObject instance;
        // 私有化构造函数
        private SingleObject(){
    
        }
    
        // 静态public方法,向整个应用提供单例获取方式
        public static SingleObject getInstance(){
            if (instance==null){
                instance = new SingleObject();
            }
            return instance;
        }
    
        public void showMessage(){
            System.out.println("Hello World!");
        }
    }

    懒汉式的线程安全:

    public class SingleObject {
        // 静态实例变量加上volatile
        private static volatile SingleObject instance;
        // 私有化构造函数
        private SingleObject(){
    
        }
    
        // 双重检查锁
        public static SingleObject getInstance(){
            if (instance==null){
                synchronized (SingleObject.class){
                    if (instance==null){
                        instance = new SingleObject();
                    }
                }
            }
            return instance;
        }
    
        public void showMessage(){
            System.out.println("Hello World!");
        }
    }
  • 相关阅读:
    c/c++ 标准库 map multimap元素访问
    c/c++ 标准库 map set 删除
    c/c++ 标准库 map set 插入
    c/c++ 标准库 map set 大锅炖
    c/c++ 标准库 pair 介绍
    c/c++ 标准库 set 自定义关键字类型与比较函数
    c/c++ 标准库 插入迭代器 详解
    python基础-内置函数 isinstance() 与 issubclass()
    移动端事件(其他触摸事件)hammer.js
    移动端事件(touchstart+touchmove+touchend)
  • 原文地址:https://www.cnblogs.com/fuckingPangzi/p/10155723.html
Copyright © 2011-2022 走看看