zoukankan      html  css  js  c++  java
  • 01【创建型】单例模式

    单例模式

    所谓单例模式,就是这个类在你的系统中只作为一个的存在,是为了防止重复的创造对象、销毁对象所带来的内存的开销。并且在这个类当中提供一个全局访问点

    主要解决:一个全局使用的类频繁地创建与销毁。

    何时使用:当您想控制实例数目,节省系统资源的时候。

    特点:

    1. 单例类只有一个实例对象;
    2. 该单例对象必须由单例类自行创建;
    3. 单例类对外提供一个访问该单例的全局访问点;

    举个栗子:

    大家都知道我们用SpringBoot作为服务端,向前台返回数据的时候,一般返回的都是JsonObject

    这个Object所有的控制器返回数据都可以用到,我们这里就可以考虑用单例模式来初始化这个类,

    单例模式在这里分为好几个模块;

    • 懒汉式
    • 饿汉式(最常用)在初始化类的时候就初始化成员变量
    public class JsonObject {
    
        private static Map<String,Object> map = new HashMap<>(16);
    
        //构造方法私有
        private JsonObject(){}
    
        //提供全局访问点 synchronized(线程安全)
        public static synchronized Object resultOk(Object data){
            map.clear();
    
            map.put("status","ok");
            map.put("data",data);
            map.put("msg","请求成功");
    
            return map;
        }
    
        //提供全局访问点
        public static synchronized Object resultError(String msg){
            map.clear();
    
            map.put("status","ok");
            map.put("data",null);
            map.put("msg",msg);
    
            return map;
        }
    
    }

    我们尝试这调用

        public static void main(String[] args) {
            System.out.println(JsonObject.resultError("密码不能为空"));
            System.out.println(JsonObject.resultOk("192.168.0.1"));
        }

    这样就完成了一个饿汉式(常用)的一种单例模式

  • 相关阅读:
    hust 1605 bfs
    hdu 1512
    2013 ACMICPC 杭州现场赛 I题
    2013年 ACMICPC 杭州赛区H题
    hdu 3717 二分+队列维护
    hdu 2993 斜率dp
    hdu 3480 斜率dp
    hdu 3507 斜率dp
    hdu 2829 斜率DP
    零碎笔记
  • 原文地址:https://www.cnblogs.com/ChromeT/p/11695480.html
Copyright © 2011-2022 走看看