liuzhao的第八次commit，利用简单工厂模式来解耦！