做了一些简单的重构，做为初学者入门用，基本上就不修改了。