I can think of cons here -
-
As interface is module, your tasks/functions will be static in nature. Whereas using task/function in Driver is dynamic and memory allocation for these are in run-time.
-
To make use of other concepts like callback(Injecting Errors), polymorphism(Extending functionality) etc. you’ll need Driver implementation for task/function.
Basically whatever advantages can be achieved from OOPs might not be applicable if you are going for ‘Interface’ implementation for tasks.