Найти тему

Паттерны объектно-ориентированного проектирования. Введение. Часть 3.

Когда я открыла книгу, то увидела вот эту потрясающую страницу и сначала просто на неё молча смотрела.

На самом деле всё не так страшно, как кажется. Это просто отношения паттернов. Но выглядит немного пугающе. :)

Заметки:

  1. Когда занимаешься проектированием, то не стоит ориентироваться только на реальный мир, потому что часто бывают классы, не имеющие аналогов в реальном мире. Например, массивы, алгоритмы и процессы.
  2. Сигнатура — имя метода, параметры и возвращаемое значение.
  3. Интерфейс объекта — множество сигнатур всех методов для объекта. В интерфейсе описываются все методы, которые можно использовать у объекта.
  4. У одного объекта может быть несколько интерфейсов. Один интерфейс может быть у нескольких разных объектов. Все взаимодействие с объектами осуществляется только через интерфейсы. Интерфейс объекта ничего не говорит про его реализацию. Вот такое я, кстати, постоянно использую и все связи обычно через интерфейсы идут.
  5. Динамическое связывание — ассоциирование запроса с объектом и одним из его методов во время выполнения. Такое связывание означает, что отправка метода не определяет никакой конкретной реализации до момента выполнения. Если совсем грубо говоря, то есть интерфейс Animal с методом voice() и класс Cat: Animal, где переопределен метод voice. И вот во фрагменте или где-либо еще мы вызываем метод voice, который находится именно в интерфейсе.
  6. Реализация объекта определяется его классом. Класс определяет данные и методы.
  7. Программируйте в соответствие с интерфейсом, а не с реализацией.
  8. Использование порождающих паттернов гарантирует, что все написано с абстракцией и с интерфейсами, а не через реализацию. Порождающие паттерны — фабричный метод, абстрактная фабрика, одиночка, прототип, строитель.