Почему CloudFrontUrlSigner является перечислением в aws-java-sdk - PullRequest
0 голосов
/ 02 января 2019

Исходный код sdk, говорящий, что com.amazonaws.services.cloudfront.CloudFrontUrlSigner - это тип enum.

Почему они не реализовали это как обычный служебный класс Java;например, class CloudFrontUrlSigner с public static методами?

есть ли какая-либо серьезная причина для использования enum или просто они сконструировали это так.

1 Ответ

0 голосов
/ 02 января 2019

Проверка источника класса, о котором вы упоминаете, похоже, указывает на то, что CloudFrontUrlSigner - это просто класс utlity, демонстрирующий несколько общедоступных статических методов.Указанные методы являются публичными и статическими, по сути работают как служебные методы, которые принимают несколько аргументов, выполняют некоторую постобработку и затем что-то возвращают (в данном случае String).

Таким образом, как упоминалось вышеосновная функциональность этого класса по сути является вспомогательным классом.Имея это в виду, необходимо учитывать лучшие практики при создании любого служебного класса.Основное вращается вокруг идеи избежать непреднамеренного создания экземпляров рассматриваемого класса.

Имея это в виду, предположите, какие действия разработчик должен был бы предпринять, чтобы убедиться, что он решил реализовать это с помощью нормального класса.,Они должны были бы объявить класс как final (чтобы избежать наследования), они бы создали приватный конструктор и затем создали бы все открытые методы.

Однако, выбрав enum довольномного всего вышеперечисленного предлагает из коробки.Вы не можете наследовать от enum и не можете создавать экземпляры с помощью new.

Подводя итог, они выбрали это для того, чтобы, казалось бы, соблюдать лучшие практики создания класса utlity.В идеале для меня я бы использовал ту же концепцию enum, но предпочел бы использовать одноэтапную службу с указанными методами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...