whirlwind
TDD infected, paranoid
Да, но фабрика одна, а пользователей класса user может быть мильен. Что ты выберешь, менять код одной фабрики которая делает четко обозначенную узкоспециализированную задачу, или менять милион точек инстанцирования класса User, которые занимаются самыми разными вещами?Ведь все равно придется в самой фабрике завязывать user на $dbObject-e, т.е. как-то придется передавать в класс user объект БД.
Фабрика скрывает то, что пользователю класса абсолютно не нужно знать для работы. Например для пользователя класса User абсолютно должно быть по барабану хранятся ли данные пользователя в БД, или получаются через SOAP с другого сервера или еще как то.
Если же пользователю класса нужны детали реализации, значит вы решаете задачи разного уровня абстракции в одном участке кода.
к тому, что ты инстанцируешь экземпляр Database в конструкторе фабрики, вместо того, что бы сделать по аналогии с юзером. Ведь это легко поправить и на работе с User никак не скажется.