title: Should domain model mappers be static?
body: <p>In many of the projects I have worked on we often have a lot of classes that map content from one domain model to another. For example from a WSDL generated model to a project specific one.</p>
  
  <p>for example </p>
  
  <pre><code>public class FooBarContentMapper {
      public static Foo fromWsToDomain(FooType fooType) {
          ...
      }
  }
  </code></pre>
  
  <p>this can also be a non-static method and the service layer can have a mapper object field instead of calling the static method:</p>
  
  <pre><code>public class FooBarContentMapper {
      public Foo fromWsToDomain(FooType fooType) {
          ...
      }
  }
  </code></pre>
  
  <p>I find both ways used a lot, but:</p>
  
  <ul>
  <li>is one of the solutions more efficient in any way?</li>
  <li>are any of the solutions considered best practice?</li>
  </ul>