1) Для инверсии зависимости. Менеджер управляет сущностями, либо напрямую либо через интерфейс. Напрямую - будет сильная зависимость. Через интерфейс - зависимость будет уже от абстракции. 2) Наследование сейчас почти не применяется(как и все ооп), только для фасадов и фреймворков. Вмести него нужно использовать интерфейсы и агрегацию. 3) Для внедрения зависимостей. Менеджер дает доступ к себе только через интерфейс. Это позволит легко подменять на менеджер для мультиплатформы. Это уберет все #ifdef и позволит делать тесты.
1) Для инверсии зависимости.
Менеджер управляет сущностями, либо напрямую либо через интерфейс. Напрямую - будет сильная зависимость. Через интерфейс - зависимость будет уже от абстракции.
2) Наследование сейчас почти не применяется(как и все ооп), только для фасадов и фреймворков. Вмести него нужно использовать интерфейсы и агрегацию.
3) Для внедрения зависимостей. Менеджер дает доступ к себе только через интерфейс. Это позволит легко подменять на менеджер для мультиплатформы. Это уберет все #ifdef и позволит делать тесты.