增加抽象工厂模式