title: how to design a java matrix class implementation independent
body: <p>I need to use a matrix class in my application for operations like Eigenvalue decomposition,LUDecomposition
   as well as normal matrix ops like multiplication,addition ,transposition etc.
   I decided to use jama at present since I am quite familiar with it and because I am currently
   working with small datasets.</p>
  
  <p>But probably later, I would want to move to a better matrix library like ejml
   or some future invention as the amount of data grows.
   How should I design my matrix class so that it is not bound to a particular implementation? 
  I would like an interface  similar to as below.</p>
  
  <pre><code>class MyMatrix{
  
      public MyMatrix addWithAnother(MyMatrix b){
      ...
      }
  
      public MyMatrix multiplyWithAnother(MyMatrix b){
      ...
      }
      public double[][] getData(){
      ..
      }
  
      public SomeEigenDecomposition getEigenValueDecomposition(){
      ...
      }
  </code></pre>
  
  <p>Should I put the implementation matrix class(jama Matrix or such) as a field and delegate calls to it?
  Still that would bind me to jama ,I think.</p>
  
  <p>How can I make the above totally free from the implementation?Any design pattern,java gurus please advise.</p>
  
  <p>thanks</p>
  
  <p>mark</p>