I ' Я пытаюсь кратко описать , когда использовать фабрику, как для себя, так и для моей команды. Я наткнулся на следующие связанные вопросы, которые несколько помогли:
На основе этих ссылок и множества других из других источников (перечисленных внизу) я придумал следующее:
Когда использовать абстрактный шаблон фабрики:
- когда вы используете интерфейс var или '
- например, пользователь user = new ConcreteUserImpl ();
- и код, который вы пишете, должен быть тестируемым / расширяемым в какой-то момент
Объяснение:
- интерфейсы по самой своей природе подразумевают множественные реализации (хорошо для модульного тестирования)
- переменные интерфейса подразумевают OCP- и LSP- совместимый код (поддержка подклассов)
- использование оператора 'new' нарушает OCP / DI, потому что сильно связанные классы трудно тестировать или изменять
«Могу ли я создать фабрику для каждого типа объекта? чрезмерно. "
- нет, у вас может быть одна (или несколько) фабрик, которые производят множество (обычно связанных) типов объектов
- , например appFactory.createUser (); appFactory.createCatalog (); и т. д.
Когда НЕ использовать фабрику:
- новый объект очень простой и вряд ли будет подклассифицирован
- например, List list = new ArrayList ();
- новый объект не интересно тестировать
- не имеет зависимостей
- не выполняет релевантной или длительной работы
- например, Logger log = new SimpleLogger ();
Ссылки:
Мой вопрос: является ли мое резюме точным и имеет ли оно смысл? Я что-то упустил?
Заранее спасибо.
задан Community 23 May 2017 в 12:00
поделиться