title: Single Responsibility and dependencies
body: <p>If an object has a <a href="http://en.wikipedia.org/wiki/Single_responsibility_principle">Single Responsibility</a>, can the following be acceptable:</p>
  
  <pre><code>public class Person
  {
     public string Name;
     public DateTime DateOfBirth;
  
     private IStorageService _storageService;
  
     public Person(IStorageService storageService)
     {
        _storageService = storageService
     }
  
     public void Save()
     {
          _storageService.Persist(this);
     }
  }
  </code></pre>
  
  <p>i.e. using a supplied collaborator (which also helps to stop the domain model being anemic).</p>
  
  <p>Or should it be:</p>
  
  <pre><code>public class Person
  {
     public string Name;
     public DateTime DateOfBirth;
  
     public Person()
     {
     }
  
  
  }
  public class StorageService
  {
      public void Persist(Person p)
      {
      }
  }
  </code></pre>