It's funny you should mention this because I am a big fan of the Dependency pattern. When you make use of it on a large scale it becomes critical to be able to control who publishes what and when, and what listeners do in response. Otherwise the notifications trigger listeners, which trigger more notifications which trigger more listeners and eventually it spins out of control.
What I found when I used the Dependency mechanism on a large scale project was that I inititally wanted some sort of aspect mechanism (AOP wasn't around at the time). But that later, during debugging, I was thankful that I could adress the listener/notification issues on a case-by-case basis by inspecting the code.
I also kept the number of central broadcasters to a minimum. If I were to add notification to every method of every class I wouldn't have a good grasp of which notification was the RIGHT notification to listen to.
I understand how these issues are addressed when I am writing the code in a standard imperative manner. How are these addressed by AOP?