在面向对象编程中,常见的全局变量有单例类对象、静态成员变量、常量等,常见的全局方法有静态方法。
单例类对象在全局代码中只有一份,所以,它相当于一个全局变量。
静态成员变量归属于类上的数据,被所有的实例化对象所共享,也相当于一定程度上的全局变量。
而常量是一种非常常见的全局变量,比如一些代码中的配置参数,一般都设置为常量,放到一个 Constants 类中。
静态方法一般用来操作静态变量或者外部数据。 常用的各种 Utils 类,里面的方法一般都会定义成静态方法,可以在不用创建对象的情况下,直接拿来使用。
Constants 类
public class Constants {
public static final String MYSQL_ADDR_KEY = “mysql_addr”;
public static final String MYSQL_DB_NAME_KEY = “db_name”;
public static final String MYSQL_USERNAME_KEY = “mysql_username”;
public static final String MYSQL_PASSWORD_KEY = “mysql_password”;
public static final String REDIS_DEFAULT_ADDR = “192.168.7.2:7234”;
public static final int REDIS_DEFAULT_MAX_TOTAL = 50;
public static final int REDIS_DEFAULT_MAX_IDLE = 50;
public static final int REDIS_DEFAULT_MIN_IDLE = 20;
public static final String REDIS_DEFAULT_KEY_PREFIX = “rt:”;
// …省略更多的常量定义…
}
what
一般把程序中所有用到的常量,都集中放到constant类中,不过,定义一个大而全的constant类不是一个好的设计思路
1、影响代码可维护性,每次修改都要修改这个类,增加代码冲突,查找费时,编译时间增加
2、影响代码可复用性 ,其他项目复用本项目的类,需要引入其他不需要的依赖
how
一、将constant拆分为多个功能更加单一的类,比如mysqlConstant、redisConstant
二、哪个类用到了,放在哪个类中,比如redisConfig需要引用,直接放到这个类中
why
提高可维护性
提高可复用性
Utils 类
类比 Constants 类的设计,我们设计 Utils 类的时候,最好也能细化一下,针对不同的功能,设计不同的 Utils 类,比如 FileUtils、IOUtils、StringUtils、UrlUtils 等,不要设计一个过于大而全的 Utils 类。