根据DRY原则重构代码