AbstractFactory add