P.S.: Although this is the standard communication pattern in java,
in a vast application the number of interfaces might grow huge,
resulting into an excessive amount of boiler-plate code.
An alternative to this is the concept of EventBus.
Check out Otto and Green robot’s EventBus.