重构完成，改为适配器模式实现