分离ui与逻辑