Имей уважение, достопочтенный сударь, я качал её со своим диалапом, с двумя разрывами потому что мамане нужно было позвонить(
@moderator
Как собрать лошадь с помощью программирования
Да и в Java никто не заставляет городить фабрики фабрик фабрик, можно просто написать класс Horse с нужными функциями ходить, жрать и срать, и все. Keep it simple sucker stupid
Вот кстати да! Никогда не понимал ну какой практический смысл в фабриках? Почему нельзя вызывать напрямую? Может кто то обьяснить по возможности простым языком, ато так и помру неучем, а ведь и вправду интересно...
Можно и напрямую, но это добавляет сильную связанность в код. В итоге в нужный момент придется выковыривать инстанцирование конкретных классов по всему коду, чтобы заменить на другой класс или везде в этих местах городить условия, когда в рантайме нужно будет создавать условно объекты другого класса. В итоге код раздувается от таких условий и становится менее читаемым и хуже поддерживаемым.
Также это затрудняет юнит-тестирование, так как конкретные классы инстанцируются прямо в тестируемом методе, в итоге нельзя протестировать только этот конкретный метод, так как он вызывает другую боевую функциональность, которая тоже может вызывать другую и т.д.
Если же применить DI и передать в метод абстрактную фабрику объектов, то зависимость "обращается" и класс создает через фабрику объекты "какого-то" класса и вызывает его через абстрактный интерфейс, в результате связанность ослабляется.
Далее при нужде можно только в одном месте кода добавить условие и передавать другую фабрику во все классы в коде, которые продолжат работать без изменения. В случае юнит-тестирования эта фабрика будет возвращать мок-объект (пустышку), в итоге тест будет тестить только нужный код и ничего более.
Это вкратце.
В реальности сразу на входе не нужно городить фабрики фабрик, но когда зависимость начинает распространяться и мешает поддержке или тестированию, вот в этот момент надо провести рефакторинг.
IT-юмор
6.9K поста53.2K подписчиков
Правила сообщества
Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору