Scala, Design Patterns, Programming, Factory Pattern.
the objects instantiated it’s managed automatically as no parameters from the user are given, it can only be instantiated concrete implementations provided for the Product ensuring that the Product class or trait cannot be instantiated with an incorrect set of parameters.This was a generic example