JMockit - это еще один инструментарий, который позволяет использовать статические методы (а также конечные методы, конструкторы и т. Д.).
Я не вижу никаких проблем с разумным использованием статических методов при разработке другого решения ОО.
Например, один шаблон / идиома, которую мне нравится использовать, - это статический фасад , в частности, для обеспечения более простого и легкого в использовании API для подсистемы постоянства в бизнес-приложении. На мой взгляд, ни одно другое решение не является более элегантным, чем что-то вроде:
List<Person> peopleAboveAge =
find("select p from Person p where p.age >= ?", age);
, где метод find
статически импортируется из класса PersistenceFacade
, который определяет только статические методы и инкапсулирует способ получения надлежащего экземпляра Session / EntityManager. Это решение подходит для модульного тестирования и является гибким. Я использовал его в бизнес-приложении, в котором было более 500 постоянных объектов, использующих Hibernate. Статический фасад помог, когда мы мигрировали из Hibernate 2 в Hibernate 3, когда мы мигрировали из Oracle в Sybase и затем обратно в Oracle, и когда мы начали использовать аннотации JPA вместо файлов "hbm.xml" для отображения ORM.