1

It depends. Which event are You using for that observer? There is possibility that You can use customer session from Observer. Of course You can check it by look what contain $observer (by using xdebug). If observer doesnt contain that, You have to use __construct function to load customerSession.


1

There isn't another way to do that. To properly execute observer you need to implement ObserverInterface. From an architectural perspective, it is easier to control dispatching events. It is easier to stick to the SOLID principle because from your perspectives you could have one class with thousands of methods that you can use for dispatching events.


Only top voted, non community-wiki answers of a minimum length are eligible