【问题标题】:Why CloudFrontUrlSigner is an enum in aws-java-sdk为什么 CloudFrontUrlSigner 是 aws-java-sdk 中的枚举
【发布时间】:2019-01-02 18:08:35
【问题描述】:

sdk的源码说com.amazonaws.services.cloudfront.CloudFrontUrlSignerenum类型。

为什么他们没有将其作为普通的 java 实用程序类来实现;例如class CloudFrontUrlSignerpublic static 方法?

使用enum 是否有任何主要原因,或者他们只是这样设计的。

【问题讨论】:

    标签: java amazon-cloudfront aws-java-sdk


    【解决方案1】:

    检查您提到的类的来源似乎表明CloudFrontUrlSigner 仅仅是一个实用类,公开了一些公共静态方法。所说的方法是公共的和静态的,本质上是作为实用方法工作的,它接受一些参数,对它们进行一些后期处理,然后返回一些东西(在这种情况下是 String)。

    因此,如上所述,此类的核心功能本质上是一个实用程序助手类。考虑到这一点,在创建任何实用程序类时都必须考虑最佳实践。主要围绕避免无意实例化相关类的概念展开。

    考虑到这一点,假设如果开发人员选择使用普通类来实现这一点,他们需要采取什么行动来确保这一点。他们必须将类声明为final(以避免继承),他们将放置一个私有构造函数,然后创建所有公共方法。

    选择使用enum 几乎可以提供以上所有开箱即用的功能。你不能从 enum 继承,也不能用 new 实例化。

    总而言之,他们选择这个是为了看似遵守创建实用程序类的最佳实践。理想情况下,对我来说,我会采用相同的 enum 概念,但更愿意使用上述方法提供单例服务。

    【讨论】:

    • 您的解释很有趣。我以前从未想过以这种方式使用enum 进行实用程序。赞成解释。
    猜你喜欢
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多