add AbstractFactory sample