新增工厂方法模式