Наиболее красивый и правильный способ передачи параметров сквозь другой класс? Приветствую!
Частенько сталкиваюсь с тем, что например:
Есть класс, например CamsList, где соответственно идёт работа со списком камер (добавление,изменение, удаление и тд)
есть другой класс, например Cam - сам объект камеры.
Допустим самой камере для работы нужен общий класс для всех камер OutputBuffer (Который нафиг не нужен CamsList).
Т.е. у меня получается либо по указателю пробрасывать класс через CamsList и в дальнейшем при создании в нём новой камеры в её конструкторе указывать этот указатель, либо использовать синглтон.
Ни то, ни то не нравится. Какие есть ещё способы, как бы вы поступили?

21 Авг 2019 в 07:03
216 +1
1
Ответы
1

Может быть стоит рассмотреть возможность использования шаблона наблюдателя (Observer pattern) в данной ситуации. В этом случае вы можете создать класс, который будет наблюдать за объектами камеры и реагировать на изменения в них. OutputBuffer может быть подписчиком на эти изменения и получать необходимую информацию без необходимости передачи через другие классы.

Еще одним вариантом может быть использование внедрения зависимостей (dependency injection). Вы можете передать объект класса OutputBuffer в конструктор класса Cam при его создании, чтобы он мог использовать его в своей работе.

Эти подходы помогут избежать использования указателей и синглтонов, а также сделают ваш код более гибким и расширяемым.Выбор конкретного способа зависит от особенностей вашего проекта и требований к нему.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 340 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир