工厂和单例