Проблема
Я нещодавно багато читав про те, що Singletons є поганим, і як ін'єкція залежності (яку я розумію як "використання інтерфейсів") краще. Коли я реалізував частину цього за допомогою зворотних викликів / інтерфейсів / DI та дотримуючись принципу сегрегації інтерфейсу, я закінчився безладом.
Залежності батьківського інтерфейсу, де в основному поєднуються всі його діти, тому чим далі вгору була ієрархія елемента інтерфейсу, тим сильніше роздувався його конструктор.
Весь шлях на вершині ієрархії користувальницького інтерфейсу був класом Application, що містив інформацію про поточний вибір та посилання на 3d-модель, яка повинна відображати зміни. Клас додатків впроваджував 8 інтерфейсів, і це була лише кругла п'ята частина продуктів (/ інтерфейсів).
В даний час я працюю з синглетом, який тримає поточний вибір і елементи інтерфейсу, що мають функцію оновлення. Ця функція виводить з дерева інтерфейс і елементи інтерфейсу, а потім отримує доступ до поточного синхронізованого виділення. Код видається мені більш чистим.
Питання:
Один сингтон може підходити до цього проекту?
Якщо ні, чи є фундаментальний недолік у моєму мисленні та / або здійсненні DI, який робить його таким громіздким?
Додаткова інформація про проект
Тип: Кошик кошик для квартир, з прибамбасами
Розмір: 2 людино-місяців для коду і призначеного для користувача інтерфейсу
Підтримка: Немає запуску оновлення, але , можливо , «версія 2.0» пізніше
середовище: Використання C # в Unity, який використовує Entity Компонентна система
Майже у всіх випадках взаємодія користувача запускає кілька дій. Наприклад, коли користувач вибирає предмет
- частину інтерфейсу, що показує цей елемент, та його опис потрібно оновити. Для цього також потрібно отримати деяку інформацію від 3d-моделі, щоб розрахувати ціну.
- далі вгору користувальницький інтерфейс, загальну загальну ціну потрібно оновити
- відповідну функцію в класі на 3d-моделі потрібно викликати для відображення змін