Мне нужно использовать матричный класс в моем приложении для таких операций, как разложение по собственным значениям, LUDecomposition, а также обычные операции с матрицами, такие как умножение, сложение, транспонирование и т. Д. Я решил использовать jama в настоящее время, так как я достаточно хорошо знаком с ним и потому чтоВ настоящее время я работаю с небольшими наборами данных.
Но, возможно, позже я захочу перейти к более качественной матричной библиотеке, такой как ejml или какому-нибудь будущему изобретению, по мере роста объема данных.Как мне спроектировать свой класс матрицы, чтобы он не был привязан к конкретной реализации?Я хотел бы интерфейс, подобный приведенному ниже.
class MyMatrix{
public MyMatrix addWithAnother(MyMatrix b){
...
}
public MyMatrix multiplyWithAnother(MyMatrix b){
...
}
public double[][] getData(){
..
}
public SomeEigenDecomposition getEigenValueDecomposition(){
...
}
Должен ли я поместить класс матрицы реализации (jama Matrix или тому подобное) в качестве поля и делегировать вызовы к нему?Тем не менее, это связывало бы меня с Джамой, я думаю.
Как я могу сделать вышеперечисленное полностью свободным от реализации? Любой шаблон проектирования, java-гуру, пожалуйста, посоветуйте.
спасибо
знак