«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Шаблоны проектирования на Java с примерами

Шаблоны проектирования на Java с примерами

Опубликовано 9 ноября 2024 г.
Просматривать:290

Design Patterns in Java with examples

Что такое шаблоны проектирования в Java?

Шаблоны проектирования — это многократно используемые решения распространенных проблем проектирования программного обеспечения. Они представляют собой лучшие практики, которые можно применять в различных ситуациях разработки программного обеспечения, особенно в объектно-ориентированном программировании, таком как Java.

Типы шаблонов проектирования

  • Шаблоны создания: Работа с механизмами создания объектов.
  • Структурные шаблоны: Касается того, как составляются классы и объекты.
  • Модели поведения: Сосредоточьтесь на общении между объектами.

Использование шаблонов проектирования

  • Обеспечьте возможность повторного использования кода.
  • Улучшение читаемости и удобства сопровождения кода.
  • Облегчение общения между разработчиками.

Примеры шаблонов проектирования

1. Шаблон «Синглтон»

    public class Singleton {
        private static Singleton instance;

        private Singleton() {}

        public static Singleton getInstance() {
            if (instance == null) {
                instance = new Singleton();
            }
            return instance;
        }
    }
Плюсы:
  • Контролируемый доступ к одному экземпляру.
  • Экономит память, предотвращая создание нескольких экземпляров.
Минусы:
  • Трудно протестировать из-за глобального состояния.
  • Может привести к жесткой связи.

2. Модель наблюдателя

    import java.util.ArrayList;
    import java.util.List;

    interface Observer {
        void update(String message);
    }

    class Subject {
        private List observers = new ArrayList();

        public void addObserver(Observer observer) {
            observers.add(observer);
        }

        public void notifyObservers(String message) {
            for (Observer observer : observers) {
                observer.update(message);
            }
        }
    }
Плюсы:
  • Обеспечивает слабую связь между объектом и наблюдателями.
  • Легко расширяется за счет новых наблюдателей.
Минусы:
  • Плохая производительность, если наблюдателей много.
  • Трудно отладить из-за непрямого взаимодействия.

3. Шаблон «Строитель»

    class Product {
        private String part1;
        private String part2;

        public void setPart1(String part1) { this.part1 = part1; }
        public void setPart2(String part2) { this.part2 = part2; }
    }

    class Builder {
        private Product product = new Product();

        public Builder buildPart1(String part1) {
            product.setPart1(part1);
            return this;
        }

        public Builder buildPart2(String part2) {
            product.setPart2(part2);
            return this;
        }

        public Product build() {
            return product;
        }
    }
Плюсы:
  • Упрощает создание сложных объектов.
  • Делает код более читабельным и удобным в сопровождении.
Минусы:
  • Добавляет сложности за счет нескольких классов строителей.
  • Для простых объектов может оказаться излишним.

4. Фабричный шаблон

    interface Shape {
       void draw();
    }

    class Circle implements Shape {
       public void draw() { System.out.println("Drawing a Circle"); }
    }

    class Rectangle implements Shape {
       public void draw() { System.out.println("Drawing a Rectangle"); }
    }

    class ShapeFactory {
       public Shape getShape(String shapeType) {
          if (shapeType == null) return null;
          if (shapeType.equalsIgnoreCase("CIRCLE")) return new Circle();
          if (shapeType.equalsIgnoreCase("RECTANGLE")) return new Rectangle();
          return null;
       }
    }
Плюсы:
  • Инкапсулирует логику создания объекта.
  • Легко расширяется для новых фигур без изменения существующего кода.
Минусы:
  • Добавляет дополнительные классы, которые могут повысить сложность.
  • При неправильном использовании может привести к увеличению количества фабричных классов.

Банда четырех (GoF)

Под «Бандой четырех» подразумеваются авторы влиятельной книги «Шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения». Авторы — Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес — представили 23 классических шаблона проектирования, которые стали основой разработки программного обеспечения.

Заключение

Шаблоны проектирования — это важные инструменты программирования на Java, которые помогают разработчикам создавать надежные и удобные в обслуживании системы. Понимание их использования, преимуществ и недостатков имеет решающее значение для эффективного проектирования программного обеспечения. Вклад «Банды четырех» обеспечивает прочную основу для эффективного применения этих моделей.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/codegreen/design-patterns-in-java-with-examples-1klg?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3