feat: 增加工厂方法