* At a previous job, I needed to change a fairly large codebase from using Guava futures to Java 8 futures.
* At the same job, a coworker expressed a desire to rewrite it with Observables.
* At a different job, a different coworker rewrote a chunk of code from Observables into futures.
* At my current job, we use micronaut, which has announced it's switching from rxjava2 to project reactor.
In the above cases, having interfaces would really help in changing the code piece-by-piece. And the rewrites wouldn't be necessary if they were behind interfaces.
In the general case I just want to program to the interface, and not pin my business logic to any particular implementation.
* At the same job, a coworker expressed a desire to rewrite it with Observables.
* At a different job, a different coworker rewrote a chunk of code from Observables into futures.
* At my current job, we use micronaut, which has announced it's switching from rxjava2 to project reactor.
In the above cases, having interfaces would really help in changing the code piece-by-piece. And the rewrites wouldn't be necessary if they were behind interfaces.
In the general case I just want to program to the interface, and not pin my business logic to any particular implementation.