实用程序类 - 静态方法与使用实用程序方法的Singleton实例

时间:2018-06-04 19:03:03

标签: java methods singleton static-methods

我正在尝试两种不同的方法来为实用程序类编写最佳代码。

选项1:

public class UtilityClass {

    public static ClassB method1(ClassA obj1, ClassA obj2) {
          //Some lines of code
    }

    public static ClassC method2(ClassD obj1, ClassD obj2) {
          //Some lines of code
    }
}

选项2:

public enum UtilityEnum {
    INSTANCE;

    public ClassB method1(ClassA obj1, ClassA obj2) {
          //Some lines of code
    }

    public ClassC method2(ClassD obj1, ClassD obj2) {
          //Some lines of code
    }
}

选项1我相信给内联提供了空间。选项2将实例放在堆中。这会影响性能吗?哪种方式最好?

1 个答案:

答案 0 :(得分:1)

如果您可以使用选项1,这是最好的选择,因为最简单但有些情况下无法实现。实际上,如果您的实用程序方法依赖于一个或多个其他类(依赖项),使用选项1,您需要添加所需的依赖项作为实用程序方法的参数。 使用选项2,您可以使用其依赖项初始化单例,而无需更改每个实用程序方法的签名。

问问自己:在这种情况下,我真的需要一个单身人士吗? (见On design patterns: When should I use the singleton?)如果不是,解决方案1绰绰有余。