重构，使其适合更多场景