In some languages, you have to jump through too many hoops to make a constructor do things you want to do that a factory can do much easily. For example, I wrote an ORM library in PHP that uses a factory to create objects. I did it this way so that if you request one by an id that already exists, it can hand the same one back to you. This was very difficult to do with a constructor in PHP v4.

Wade.