重构，采用工厂方法搭建整个框架，使得易扩展