整理项目结构，重构代码。增加代码重用性，减少重复代码，实践一些设计模式