2014-3-3 重构了基础版本，修改了用组合代替继承的方式