This question already has an answer here:

I wanted to know when should I use observers instead of a plugin.

marked as duplicate by Manashvi Birla, Piyush, Keyur Shah, Priyank, Prince Patel Feb 22 '18 at 6:12

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.


IMO, you should prefer using plugins and "fallback" to observers when you can't modify some arbitrary functionality; either because it's isolated within a protected method (plugins do not work on protected or private methods), or because the observer provides access to an object that is otherwise inaccessible because of the nature of the code. The latter is rather rare, but Magento explicitly passes objects into an observer.