title: Design pattern for post-execution output?
body: <p>I'm writing a system that performs an execution job (running a bunch of scripts) and outputs a report at the end in a few different formats.</p>
  
  <p>I'm looking for some sort of insight into how this reporting should work. Is there a design pattern or a best practice that applies here?</p>
  
  <p>For example, my reporting code is in a Reporter class, with subclasses for the different formats and destinations.</p>
  
  <p>Should this Reporter class be all-knowing, with access to everything else in the system (so it can extract what it needs)? Should the system "feed" information into the Reporter as it executes, so it doesn't have any special access?</p>