difficult to debug, because the flow of control often stopped at an interface
Not sure if I understand how this is a problem - you should always have the concrete class's name in any stacktraces that you have, either from exceptions or by attaching a debugger. Are you attaching a debugger?
Not only that, but if you have your application's logging based around logger name = class name, you'll always know exactly which classes/objects are in control.
Also, if you have the "XML tying it together" how can anything hide behind the interface?
Comments
difficult to debug, because the flow of control often stopped at an interface
Not sure if I understand how this is a problem - you should always have the concrete class's name in any stacktraces that you have, either from exceptions or by attaching a debugger. Are you attaching a debugger?
Not only that, but if you have your application's logging based around logger name = class name, you'll always know exactly which classes/objects are in control.
Also, if you have the "XML tying it together" how can anything hide behind the interface?