Объектно-ориентированное проектирование, паттерны проектирования (Шаблоны)




19
December

Паттерн Strategy (Стратегия)

Posted in: Паттерны проектирования | 11 Comments

Этот паттерн проектирования известен также под названием Policy. Суть его состоит в том, чтобы создать несколько моделей поведения (стратегий) для одного объекта и вынести их в отдельные классы. Вот ряд преимуществ данного паттерна:

  • позволяет выбирать модель поведения объекта динамически;
  • упрощает процесс добавления новых стратегий;
  • является альтернативой наследованию;
  • избавляет от множества условий (if, case);
  • делает еще много всего.

Если вам понятно, что значит каждый из этих пунктов (особенно 5-ый), переходите сразу к примеру на Java. А мы пока рассмотрим эти пункты немного подробнее.
(more…)

13
December

Паттерн Facade (шаблон Фасад на Java)

Posted in: Паттерны проектирования | 3 Comments

Вернемся к рассмотрению паттернов проектирования. На мой взгляд, паттерн Facade (Фасад) встречается достаточно часто и соответственно заслуживает внимания.

Нужен он вот для чего. При написании кода программисту приходится использовать различные third-party библиотеки. Часто API библиотек довольно абстрактное. Некоторые методы классов могут быть вообще не нужны или содержать параметры, которые не существенны для решения конкретной задачи. Далее, для получения результата могут понадобиться длинные цепочки вызовов методов или же сам результат будет не совсем в подходящем виде. Худший вариант - это использование плохо спроектированной библиотеки, с чем тоже иногда приходится работать.
Все эти проблемы можно решить с помощью паттерна Facade.
(more…)

13
December

Паттерн Singleton (Одиночка)

Posted in: Паттерны проектирования | 12 Comments

English version of this article you can find here.
Этим постом я открываю цикл статей, посвященных паттернам проектирования. Все написанное мной основывается исключительно на личном опыте.
Паттерны проектирования - это описание некоторых проблем, возникающих во время объектно-ориентированного проектирования, а также способов их решения (как практических, так и теоретических). Иными словами - это примеры правильных подходов к решению типичных задач проектирования.
Одним из самых распространенных паттернов является Singleton (Одиночка). Задача этого паттерна ограничить количество экземпляров некоторого класса. Зачем это может понадобиться? Об этом читайте ниже. Реализовать же паттерн Singleton на языке Java можно следующим образом:
(more…)