[updated]-用Map来替代switch， 用getMessages()来延迟加载数据