Evgenii Legotckoi
Sept. 24, 2018, 8:34 p.m.

Example - Factory Method in Java

In class-based programming, the factory method pattern is a creational pattern that uses factory methods to deal with the problem of creating objects without having to specify the exact class of the object that will be created. This is done by creating objects by calling a factory method—either specified in an interface and implemented by child classes, or implemented in a base class and optionally overridden by derived classes—rather than by calling a constructor.


  1. interface ImageReader {
  2. DecodedImage getDecodeImage();
  3. }
  4.  
  5. class DecodedImage {
  6. private String image;
  7.  
  8. public DecodedImage(String image) {
  9. this.image = image;
  10. }
  11.  
  12. @Override
  13. public String toString() {
  14. return image + ": is decoded";
  15. }
  16. }
  17.  
  18. class GifReader implements ImageReader {
  19. private DecodedImage decodedImage;
  20.  
  21. public GifReader(String image) {
  22. this.decodedImage = new DecodedImage(image);
  23. }
  24.  
  25. @Override
  26. public DecodedImage getDecodeImage() {
  27. return decodedImage;
  28. }
  29. }
  30.  
  31. class JpegReader implements ImageReader {
  32. private DecodedImage decodedImage;
  33.  
  34. public JpegReader(String image) {
  35. decodedImage = new DecodedImage(image);
  36. }
  37.  
  38. @Override
  39. public DecodedImage getDecodeImage() {
  40. return decodedImage;
  41. }
  42. }
  43.  
  44. public class FactoryMethodDemo {
  45. public static void main(String[] args) {
  46. DecodedImage decodedImage;
  47. ImageReader reader = null;
  48. String image = args[0];
  49. String format = image.substring(image.indexOf('.') + 1, (image.length()));
  50. if (format.equals("gif")) {
  51. reader = new GifReader(image);
  52. }
  53. if (format.equals("jpeg")) {
  54. reader = new JpegReader(image);
  55. }
  56. assert reader != null;
  57. decodedImage = reader.getDecodeImage();
  58. System.out.println(decodedImage);
  59. }
  60. }

Do you like it? Share on social networks!

Comments

Only authorized users can post comments.
Please, Log in or Sign up
  • Last comments
  • Evgenii Legotckoi
    March 9, 2025, 9:02 p.m.
    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
  • VP
    March 9, 2025, 4:14 p.m.
    Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
  • ИМ
    Nov. 22, 2024, 9:51 p.m.
    Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
  • Evgenii Legotckoi
    Oct. 31, 2024, 11:37 p.m.
    Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
  • A
    Oct. 19, 2024, 5:19 p.m.
    Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html