Scala client composition with Traits vs implementing an abstract class
<p>I have read that with Scala, it is generally advised to use Traits instead of Abstract classes to extend a base class.</p>

<p>Is the following a good design pattern and layout? Is this how Traits were intended to replace Abstract?</p>

<ul>
<li>client class (with def function1)</li>
<li>trait1 class (overrides function1)</li>
<li>trait2 class (overrides function1)</li>
<li>specificClient1 extends client with trait1</li>
<li>specificClient2 extends client with trait2</li>
</ul>