抽出单例宏