优化factory方法