Это было опубликовано на Medium
Шаблон составного проектирования представляет собой иерархию, в которой дочерние узлы ведут себя иначе, чем бездетные узлы.
Узор состоит из трех элементов:
- Компонент : суперкласс, обычно являющийся интерфейсом
- Составной : узел с дочерними элементами реализует компонент
- Лист : бездетный узел реализует компонент
Типичным примером является файловая система, в которой есть папки и файлы:
Папки могут содержать файлы, другие папки или могут быть пустыми. С другой стороны, файлы не содержат папок или других файлов!
Помните, что самый важный аспект шаблона дизайна – это его намерение! Как только вы это поймете, вы сможете эффективно использовать шаблон в своих проектах!
Проект: Файловая система
получить исходный код можно здесь
Здесь вы познакомитесь с простой файловой системой, где вы можете увидеть простую реализацию шаблона.
Здесь вы можете увидеть UML нашей файловой системы:
Найдите минутку, чтобы изучить код и:
- обратите внимание, какой компонент шаблона представляет каждый класс
- понаблюдайте за выводом кода и увидите разницу между файлом и папка
- в каких сценариях, по вашему мнению, этот шаблон был бы полезен?
Проект: Расширение нашей Файловой системы
получить исходный код можно здесь
Время испачкать руки:
Теперь, когда вы понимаете, как работает составной шаблон, давайте расширим вашу файловую систему, добавив новые типы файлов!
Возьмите код и реализуйте новый тип файла: Изображение
Общие руководящие принципы:
- Img должен реализовывать Файловый компонент
- В Img должно быть поле данных, вы можете использовать все, что вам нравится
- Вы можете использовать метод отображения файла, чтобы настроить его для нового файла
- Создайте объект Img и добавьте его в папку!
К концу этого проекта вы применили шаблон в существующей кодовой базе и приобрели практический опыт его применения.
Посмотрите на решение
Счастливого кодирования!!!
Оригинал: “https://dev.to/achimoraites/design-patterns-composite-4k49”