title: MVC, should I be referencing additional classes from model or controller
body: <p>I'm trying to learn a bit more about MVC. So far I am doing okay with smaller programs. For my purposes I have been keeping all the business logic and 'results' in my model. At the moment I have 4 classes, my main class, a view class and a model and controller class.</p>
  
  <p>I'm now thinking of separating some of the business logic from my model class and putting it in a separate class. This is where I'm unsure of what the best practice would be. Should I be creating/referencing my new class in my model class or should I do it directly from my controller class.</p>
  
  <p>I'm not sure if it helps much but this is my current controller class:</p>
  
  <pre><code>public class BrowseController {
  private BrowseModel m_model;
  private BrowseView m_view;
  
  public BrowseController(BrowseModel model, BrowseView view) {
      m_model = model;
      m_view = view;
  
      view.addRunListener(new RunListener());
      view.addClearListener(new ClearListener());
  }
  
  class RunListener implements ActionListener{
      public void actionPerformed(ActionEvent e){
              start();            
      }
  }
  
  class ClearListener implements ActionListener{
      public void actionPerformed(ActionEvent e){
          System.out.println("clear");
          m_view.reset();
          m_model.reset();
      }
  }
  
  private void start(){
      SwingWorker&lt;Void, Object[]&gt; worker = new SwingWorker&lt;Void, Object[]&gt;(){
  
          @Override
          protected Void doInBackground() throws Exception {
              m_view.setStatus("Running");
              HashSet&lt;String&gt; urls = m_view.getTargetUrls();
  
              for (String url : urls){
                  m_model.processUrl(url);
  
                  publish(m_model.getResults());
              }
  
              return null;
          }
  
          @Override
          protected void done() {
              m_view.setStatus(m_model.getStatus());
          }
  
          @Override
          protected void process(List&lt;Object[]&gt; resultList) {
              for(Object[] resultRow : resultList){
                  m_view.setResult(resultRow);
              }
  
          }
  
      };
  
      worker.execute();       
  }
  
  }
  </code></pre>
  
  <p>If there's anything else I should be providing just let me know, thanks.</p>