factory method ump
工厂方法模式