有点像单例模式中的两步检查，第一步是validation，第二步是persistence