Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[16] Architecture patterns. #647

Closed
wants to merge 1 commit into from
Closed

Conversation

atlance
Copy link

@atlance atlance commented Aug 3, 2023

Паттерны проектирования.

Цель:

  • Набор задач на реализацию изученных паттернов.
  • Требуется решить минимум 5 задач.

Описание/Пошаговая инструкция выполнения задания:

Выберите пять из 12 паттернов:

  • Абстрактная фабрика
  • Адаптер
  • Декоратор
  • Шаблонный метод
  • Фабричный метод
  • Итератор
  • Строитель
  • Наблюдатель
  • Прокси
  • Цепочка обязанностей
  • Стратегия
  • Компоновщик
  • Запросите задачи у преподавателя
  • Реализуйте паттерн на базе предложенного кода.

Предложенный код:

Разработайте консольное приложение (CLI), которое будет рекурсивно выводить список каталогов и файлов начиная с
заданного каталога.

Требования:

  • каталоги и файлы отображаем в виде дерева
  • по каждому файлу и каталогу выводим, сколько он занимает
  • если файл или каталог занимает больше 100 Kb, его не выводим
  • для текстовых файлов (формат .txt) дополнительно выводим первые 50 символов содержимого
  • для HTML-файлов (формат .html) выводим первые 50 символов текста (удаляя теги)

Использование паттернов:

  • Компоновщик: рекурсивный вывод каталогов и файлов
  • Цепочка обязанностей: решение выводить/не выводить запись
  • Стратегия: вывод информации в зависимости от типа файла

Критерии оценки:

  • Каждый паттерн - 2 балла
  • Реализация должна соответствовать определению паттерна, DRY, KISS, SOLID.

Результат.

Запуск: основные команды

  1. make init dev - сообирается php-cli контейнер.
  2. make directory-tree /app/src - пример запуска комады по рекурсивному выводу дерева каталога.

asciicast

@atlance atlance closed this Sep 6, 2023
@atlance atlance deleted the AStepanov/hw16 branch September 6, 2023 05:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant