Abstract factory pattern added
add test for abstract factory