zoukankan      html  css  js  c++  java
  • 单例类

      单例类是指仅有一个实例的类,在系统中具有唯一性的组件可作为单例类,这种类的实例通常会占用较多的内存,或者实例的初始化过程比较冗长,因此随意创建会影响系统性能。

      Struct框架的ActionServlet类和Hibernate的SessionFactory和Configuration类也是单例类:

    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;
    
    public class GloabalConfig {
        private static final GloabalConfig INSTANCE=new GloabalConfig();
        private Properties properties=new Properties();
        private GloabalConfig(){
            try {
                //加载配置信息
                //InputStream in=getClass().getResourceAsStream("myapp.properties");
                //读取文件要使用类加载器[因为类加载器读取资源的时候,默认的主目录是src目录]
                InputStream in=GloabalConfig.class.getClassLoader().getResourceAsStream("myapp.properties");
                properties.load(in);
                in.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        public static GloabalConfig getInstance(){ //静态工厂方法
            return INSTANCE;
        }
        public Properties getProperties(){
            return properties;
        }
        public static void main(String[] args) {
            String name=GloabalConfig.getInstance().getProperties().getProperty("name");
            System.out.println(name);
        }
    }

     以上GloabalConfig类就是单例类,用于存放软件系统配置的信息。GloabalConfig类从配置文件中读取配置信息,并存放在properties属性中:

     实现单例类两种方式:

      (1)把构造方法定义为private类型,提供 public static final类型的静态变量,该变量引用类的唯一实例:

        public static final GloabalConfig INSTANCE=new GloabalConfig();

        (2)把构造方法定义为private类型,提供public static类型的静态工厂方法:如上

       这样更加灵活,可以修改静态工厂方法getInstance()的实现方式。

       

  • 相关阅读:
    Array
    自底向上的单元测试&&程序设计思想
    如何从 100 亿 URL 中找出相同的 URL?
    个人博客开发之数据库设计
    SpringBoot 优雅整合Swagger Api 自动生成文档
    SpringBoot Validation参数校验 详解自定义注解规则和分组校验
    SpringBoot Validation优雅的全局参数校验
    Spring Boot 无侵入式 实现RESTful API接口统一JSON格式返回
    SpringBoot优雅的全局异常处理
    SpringBoot2.4.x整合Mybatis-Plus3.4.x(详细教程)
  • 原文地址:https://www.cnblogs.com/taray/p/5336184.html
Copyright © 2011-2022 走看看