Nemá smysl znovu vymýšlet co už je vymyšlené. Sice může být zajímavé si všechno programovat sám, ale aby člověk byl v praxi použitelný jako součást týmu tak musí dodržovat standardy. Když si nějaký objekt udělám pomocí new tak mám zodpovědnost za to že ho i správně nakonfiguruji (nejspíš parametry konstruktoru nebo settery), správně ho inicializuji (až poté co budou nakonfigurované a inicializované všechny jeho závislosti) a nakonec udělám správně shutdown (dřív než shutdown všech jeho závislostí). Dělat se s tímhle na každém projektu znovu a znovu je příšerně neefektivní a vytvoří to spoustu špatně udržovatelného kódu, proto vznikly standardizované postupy jak na to. Nejrozšířenější je asi Spring Framework nebo novější verze Java EE (EJB).
A kdo říká, že vymýšlím vymyšlené? Používám přesně to, co je vymyšlené. Dependency Injection. Vzor Singleton k tomu nepotřebuji.
Pokud vytvořím objekt pomocí operátoru new, je již nakonfigurován. Nevytvářím nevalidní objekty. Je na to dostatek běžných vzorů, jejichž použití je triviální. Běžně je kopíruji mezi projekty, zpravidla ani nepotřebují úpravy. Je to velmi snadno udržovatelné, neboť je to velmi štíhlé a stabilní.