My scenario is as follows:
Is this a good scenario for contacts and interfaces? I usually see these used as a way to change system wide implementations (i.e. from file to database drivers) and am not sure if they are so suitable when switching between different concrete classes on the fly.
I want a way to ensure that I can add new shipping companies easily, without having to change any of the code that interacts with the various API's.