Possibly duplicated with this postthis post
Essentially you are asking the differences between polling and interrupt/event-driven. You can Google it and there are a lot of answers out there. They both have advantages and disadvantages and which one to use depends on the scale and architecture of your application.
Here is another discussion you can look at.