消歧部分重构，改用策略模式