In whatever OO programming languages, you should always refer to objects by interfaces. E.g.
By doing this, you program will be more flexible. If you decide that you want to switch implementations, all you have to do is change the class name in the constructor (or use a different static factory).
The exceptions are
- If the implementation contains specific methods that you want to use
- No interfaces available for that class.