Steven Clarke has an excellent post about using factories in APIs. The post explains why some developers find factories difficult to use.