新增工厂方法模式
新增单例模式