title: Scala and interfaces
body: <p>In <code>Java</code> I would typically declare my entire domain as <code>interface</code>s, possibly with some kind of <code>Factory</code> to get me implementations. This is partly because I am so old I can remember when some persistence layers required implementation classes to subclass a specific class but also so that I can easily:</p>
  
  <ul>
  <li>mock objects for testing purposes</li>
  <li>proxy objects at runtime if necessary</li>
  <li>provide different implementations</li>
  </ul>
  
  <p>I follow this practice even when I don't really envisage that I'll actually want to do any of the above; I still believe it to be good practice <em>just in case</em>. I think it's a fairly common approach.</p>
  
  <p>Would this be unusual in Scala-land if I declare all domain objects <code>abstract</code>? Do the points above hold for Scala as well?</p>