factory&Singleton