Заводской шаблон [1] - это способ скрыть и упростить создание объекта. Например, если у вас есть много реализаций алгоритмов EncryptDecrypt
и каждая из них имеет различную инициализацию и конфигурацию, то для пользователя будет сложно использовать эти реализации, потому что их слишком много и с разными конфигурациями, и использовать их пользователь будет Нужно прочитать много информации, чтобы понять, как создать объект, который ему нужен. Таким образом, шаблон Factory помогает предоставить уникальный интерфейс, в котором у пользователя есть все различные реализации алгоритмов и методов EncryptDecrypt
для их создания без необходимости знать, как их инициализировать.
Думайте, что вы находитесь в ресторане с тоннами еды и хотите что-то заказать. Как вы думаете, что было бы, если бы не было меню? Вам нужно будет проверить все виды пищи и приготовлений, чтобы выяснить, что вы хотите. Фабрика работает как меню, в котором все параметры объединены и организованы для удобства использования.
Теперь, если вы посмотрите EncryptDecrypt
использование
EncryptDecrypt ed = new AESEncryptDecrypt();
String msg = "Text message@yahoo.com";
String e = ed.encryptText(msg);
System.out.println(e);
System.out.println(ed.decryptText(e));
Вы заметите, что он не создает никаких объектов, он не похож на меню. На самом деле EncryptDecrypt
сам является объектом, который выполняет всю работу. Но с другой стороны у вас есть
protected Key getKey() {
Key key = new SecretKeySpec(getKeyValue().getBytes(), getAlgorithm());
return key;
}
protected Cipher getCipher() throws NoSuchAlgorithmException, NoSuchPaddingException {
Cipher c = Cipher.getInstance(getAlgorithm());
return c;
}
и это больше похоже на Фабрику, где вы скрываете создание Объекта (Ciper and Key) для пользователя, и ему не нужно даже знать, что эти Объекты существуют.
Итак, мои ответы таковы: EncryptDecrypt
не является Фабрикой, и для этого вам необходимо отделить создание Объекта (Фабрику) от использования Объекта.
ссылка:
[1] Википедия, определение фабричного образца .