JavaEE 中DEBUG模式的设计

来源:互联网 发布:淘宝鹦鹉 编辑:程序博客网 时间:2024/06/08 23:20

JavaEE 中DEBUG模式的设计

通过DEBUG模式我们可以快速的切换线上和线下的环境

public class Final {    // DEBUG模式,该字段必须放在前面,因为都是静态的,所以JVM会按照代码顺序加载    // DEBUG模式的设计依赖此字段,该字段放到后面会报错    private static boolean DEBUG;    // 包访问权限的静态字段    // 把该值访问权限限制在包内,提供给Const使用    static String HOST_NAME;    static int PASSWORD;    // 静态加载块,在类加载的时候就加载数据    static {        // 通过方法来实现控制的编程思想会让你的代码更具健壮性        // 实现封装性的效果也更好        // 代码的易读性和维护性也更好        // 切换DEBUG模式只需要调用disableDebug或者enableDebug方法即可        disableDebug();        // DEBUG控制的实现        if (DEBUG) {            HOST_NAME = "admintest";            PASSWORD = 123456;        } else {            HOST_NAME = "admin";            PASSWORD = 20170720;        }    }    // 开启DEBUG模式    private static void enableDebug() {        DEBUG = true;    }    // 关闭DEBUG模式    private static void disableDebug() {        DEBUG = false;    }    // 私有的构造方法,禁止常量构造器被外部创建    private Final(){}}
public enum Const {    // 使用枚举作为常量池,来解决Final类不能使用final的问题    // 因为枚举本身就是常量形式    // 而且他是绝对线程安全的    HOST_NAME(Final.HOST_NAME),     PASSWORD(Final.PASSWORD);    private Object value;    // 私有的构造方法,禁止常量池被外部创建    private Const(final Object value) {        this.value = value;    }    // 返回object,    public Object getValue() {        return value;    }    // 返回int,    public int getInt() {        return (int)value;    }    // 返回其它类型    // ...    // enum类型的类会默认继承Enum类    // 而Enum的toString方法会返回构造函数的name参数,所以此处不覆写toString方法    public String getString() {        return value.toString();    }}
public class Use {    public static void main(String[] args) {        String s = Const.HOST_NAME.getString();        int i = Const.PASSWORD.getInt();    }}
原创粉丝点击