Скажем, у меня есть класс под названием PermissionManager, который должен существовать только один раз для моей системы и в основном выполняет функцию управления различными разрешениями для различных действий в моем приложении. Теперь у меня есть некоторый класс в моем приложении, который должен иметь возможность проверять определенное разрешение в одном из своих методов. Этот конструктор классов в настоящее время является общедоступным, т.е. Используется пользователями API.
До тех пор, пока пару недель назад я просто попросил бы мой класс вызвать следующий псевдокод:
PermissionManager.getInstance().isReadPermissionEnabled(this)
Но так как я заметил, что все здесь, ненавидящие одиночные пары + подобную связь, мне было интересно, какое лучшее решение было бы, так как аргументы, которые я прочитал против синглетов, кажутся имеющими смысл (не проверяемый, высокая связь и т.д.),.
Итак, нужно ли мне на самом деле требовать от пользователей API передать экземпляр PermissionManager в конструкторе класса? Хотя мне нужен только один экземпляр PermissionManager для моего приложения?
Или я все об этом ошибаюсь и должен иметь непубличный конструктор и factory где-нибудь, что передается мне в экземпляр PermissionManager?
Дополнительная информация Обратите внимание, что когда я говорю "Injection Dependency", я говорю о DI Pattern... Я не использую никаких рамок DI, таких как Guice или Spring. (... пока)