“if I must encode either the interface or the implementation, I choose the implementation. Calling it ShapeFactoryImp, or even the hideous CShapeFactory, is preferable to encoding the interface.”
―
Robert C. Martin,
Clean Code: A Handbook of Agile Software Craftsmanship