abstract factory, Creational Patterns