- Abstract factory design pattern implemented