title: How to deal with cross-cutting concerns in a OO Application? Use Singleton? Dependency Injection? What?
body: <p>Let's say that I'm currently designing an application where I will need to use a global timing system (it's a cross-cutting concern). I'll need to access data from that global timing system from basically anywhere in my app and it's not like I can see that "this part of the application will need it while the other won't". </p>
  
  <p>My question is.. should I design that as a kind Ambient Context (in this case, Singleton), or should I try to devise other way to accomodate for this?</p>
  
  <p>I certainly don't feel it's correct to make all my classes have to get this global timing class passed to them by constructor injection. Lot's of time I would have to pass the reference really down the chain until some class eventually needs it. On the other hand, it would turn everything more clear from the reading stand point(it makes it clear what my classes' dependencies are).</p>
  
  <p>How do people generally deal with this? Are there any other techniques around that can help with this? AOP maybe?</p>
  
  <p>PS: The global timing system was just an idea I took from a book I'm currently reading. A logging system would be another good example of this kind of problem.</p>
  
  <p>Thanks</p>