Некоторые классы хотят контролировать способ их создания и таким образом защищать свои конструкторы от публичного использования. Использование статических фабричных методов, таких как getInstance
, позволяет им сохранять этот элемент управления в своем собственном коде.
Есть миллион причин для этого.
edit : Чтобы обратиться к вашему комментарию, это не может быть сделано внутри конструктора, потому что оператор new
всегда создаст новый экземпляр (если не выдается исключение). К тому времени, когда вызывается конструктор, уже слишком поздно для кода в конструкторе контролировать, создан ли объект.