新增 Factory模式