We are simply creating the object of the implementing class and using it where needed. It looks simple but has drawbacks. If we want to change the Trace implementation that the program uses, we need to edit each class that instantiates a Trace implementation. If a lot of classes are using Trace, it might take a lot of work to make the change.
(more…)