Abstract factory pattern of design patterns