sdk的源码说明com.amazonaws.services.cloudfront.CloudFrontUrlSigner是enum类型。
为什么他们不将其作为一个普通的java实用程序类来实现;例如,使用public static方法的class CloudFrontUrlSigner?
使用enum有什么主要的原因吗?或者他们就是这样设计的。
发布于 2019-01-03 03:27:14
检查您提到的类的源代码似乎表明CloudFrontUrlSigner只是一个实用的类,公开了一些公共的静态方法。这些方法是公共的和静态的,本质上是作为实用程序方法工作,它接受一些参数,对它们进行一些后处理,然后返回一些东西(在本例中是一个String)。
因此,如上所述,该类的核心功能本质上是一个实用程序助手类。考虑到这一点,在创建任何实用程序类时都必须考虑最佳实践。主要围绕着避免无意中实例化有问题的类的概念。
考虑到这一点,假设开发人员需要采取什么行动来确保这一点,如果他们选择用一个普通的类来实现这一点。他们必须将类声明为final (以避免继承),并将私有构造函数放在适当的位置,然后创建所有的公共方法。
不过,选择使用enum几乎可以提供上述所有开箱即用的功能。您不能从enum继承,也不能用new实例化。
总而言之,他们选择这样做似乎是为了遵守创建实用类的最佳实践。理想情况下,对我来说,我会使用相同的enum概念,但更愿意使用上述方法的单例服务。
https://stackoverflow.com/questions/54011134
复制相似问题