Как вы примирились с использованием статических заводских методов и насмешек?Статические методы фабрики и насмешливость
Многие люди просто скажут: не используйте статические заводские методы, вместо этого используйте DI.
Ну, иногда вы не можете избежать статических методов фабрики. Рассмотрим следующие варианты использования, которые должны быть знакомы:
Представьте, что у вас есть класс под названием Option
, как в scala. Вы не можете избежать использования статического заводского метода, если хотите повторно использовать один и тот же экземпляр для всех отсутствующих значений.
Как только вы идете new Option(null)
, вы создаете новый объект-объект, вы не можете возвращать один и тот же объект снова и снова.
Аналогичным вариантом использования является Integer.valueOf()
, который будет повторно использовать целые объекты для значений ниже 128. Невозможно обойтись без использования статического метода фабрики.
Еще одно преимущество заключается в том, что методы фабрики более наглядны, чем ключевое слово new
.
Итак, как вы, ребята, имеете дело с использованием статических заводских методов и в то же время хотите использовать наследование и макеты?
спасибо.
Зачем вам нужно «издеваться» над опцией? Способы фабрики 'static' для таких тривиальных классов прекрасны. –
Забавно, что вы специально раскрываете «Вариант» Scala в качестве примера здесь, так как * Scala не имеет понятия «статические элементы» *. 'Option.apply()' - это экземпляр (нестатический) метод для обычного (экземпляра) объекта. В JVM объект экземпляра хранится в статическом поле 'Option.MODULE', поэтому вызов' Option (1) 'фактически расширяется до типа Option.MODULE.apply (1)'. Это очень похоже на 'System.out.println()', где 'out' также является статическим полем, но вы можете изменить через' System.setOut() '. Другими словами, у вас нет * * использовать статические методы для чего-либо ... – DaoWen