我正在用Java编写一个代码,一个专门用于创建矩阵的代码,我使用了许多不同的方法。我试图将类似的方法分离到不同的文件中,这样它们就更容易修改了,但是我无法想出一种在没有可怕继承的情况下这样做的方法。我想要做的事情是可能的吗,还是我应该咬紧牙关,把它们都放在一个文件里?例如,我有4个单独的文件。我唯一能想到的不需要导入许多不同类的方法是:
MatrixBase -> MatrixSort --> MatrixMethods -->矩阵
当我只想将类似的方法存储在同一个文件中时,我会感觉到一个类的继承是不必要的。我最好的解决办法是什么?
发布于 2015-03-11 18:45:57
Strategy
是OOP设计模式之一,它允许将方法与对象分开。虽然它的主要目的是提供一种在运行时提供替代算法实现的机制,但您可能需要检查它是否适合您的情况。
发布于 2015-03-11 19:00:49
如果单个类中有太多代码,则可能不会使用最佳的面向对象设计方法。此外,在Java中导入许多类也很好。不过,我会在你的问题范围内给你一个合理的选择。希望能帮上忙。
尝试使用组合,以便使函数在单个位置可用,同时仍然在逻辑上将它们分解为单独的类。..。因此,让我们假设您将MatrixMath作为根类来访问所有矩阵操作。让我们假设您希望有一个代数集合和一个排序集合。
// container that has all of your matrix math objects
public class MatrixMath {
MatrixMath(){};
public final MatrixAlgebra algebra = new MatrixAlgebra();
public final MatrixSort sort = new MatrixSort();
}
// put all of the algebra type functions here
public class MatrixAlgebra {
MatrixMultiply(){};
public static Matrix multiply(final Matrix a, final Matrix b) {
Matrix result;
// do something
return result;
}
}
// and your sorting functions here...
public class MatrixSort {
...
}
现在,要访问矩阵乘法,可以使用以下方法:
// create a reference to your MatrixMath class so that you
// can use your function.
public class Matrix {
final MatrixMath math = new MatrixMath();
Matrix times(Matrix other) {
return math.algebra.multiply(this,other);
}
}
如果您真的只是在创建函数,并且使一切都是静态的,那么您可以在任何地方使用静态引用。
发布于 2015-03-11 19:13:56
你不应该创建这么大的班级--这是个非常糟糕的主意。
您需要开始评估如何将部分功能提取到其他小类中。其他类不需要公开给用户,如果您愿意,它们可以是包私有的(如果您不提供访问级别,这就是您得到的)。
您可以很容易地拥有一个单独的类,它是一个“矩阵”,但也可以是大量其他类的外观。
我不确定这是否与您正在做的事情相同,但我花了一段时间开发了一个带有可替换数字实现的矩阵类,该类可以处理特殊类型,如矩阵可以操作的rational和复杂类型。
Java在这种工作中很痛苦(我可能是您遇到的最强大的java支持者,所以这说明了很多!)主要的问题是,数字类型没有有用的基类型,但是要完成这类工作,它确实有助于重载操作符(我通常认为这只不过是一个吸引人的麻烦)。
如果这是您所要做的事情,我强烈建议您查看最顶层的groovy (使用类)。如果这不是你正在做的事情,那就为你的咆哮感到抱歉,但你可能在此之前就停止了阅读:)
https://stackoverflow.com/questions/28998979
复制相似问题