feat: 完成单例模式