我想用几个方法创建一个类,可以在包内的任何地方使用。在阅读了枚举自动提供安全实例化、序列化和防止在枚举之外实例化的保护后,我选择将枚举与单个实例一起使用。我相信这是创建单例最简单、最安全的方法。但我的上司回来说这是肮脏的编程。真的吗?有谁知道使用枚举而不是对象构造和使用类传递引用的缺点?枚举什么时候初始化?
public enum Myenum {
INSTANCE;
public void init(...) {..initialize local variables...}
public method1 (...) {...}
public method2 (...) {...}
}
对比
public class Myclass {
public Myclass(...) {...initialize local variables...}
public method1 (...) {...}
public method2 (...) {...}
}
对比
public class Myclass {
public static void init(...) {...initialize local variables...}
public static method1 (...) {...}
public static method2 (...) {...}
}
在我看来,使用第二种方法的缺点是,在我需要在对象构造时使用方法和同步问题的任何地方都需要 Myclass 的对象引用。在我的案例中,我并没有真正使用 enum 的序列化优势。
枚举是否隐含地提供了依赖注入的好处?(即可以在包内随处访问Myenum的method1、method2,不用担心创建实例)
我需要的枚举的另一个特性是枚举内部的方法不能在它之外被覆盖。
我在这里错过了一些明显的缺点吗?