School Assignment Implementing Abstract Factory Pattern