A primera vista, diría que sería mejor hacer el código común como un método público estático en una clase pública. Esto hará que el método útil para cualquier clase sólo mediante el uso
UtilityClassName.methodName();
Esto es mejor que lo que es un método concreto en una super-clase abstracta porque entonces siempre se tendrá que extender esta super-clase en todas las clases donde quieres usar este único método.
Pero ahora, como dijiste, el comportamiento del método depende de algunas variables. Ahora, si depende de las variables de instancia de diferentes clases, mejor agregue este método en una interfaz y permita que todas sus clases implementen esta interfaz y tengan su propia implementación de la misma.
Pero de nuevo si estas variables son valores constantes, entonces tienen estos valores constantes en una interfaz. Implemente estas interfaces en su clase de utilidad. Y nuevamente haga que sea un método estático en esa clase de utilidad que usará directamente estas constantes.
Por ej. Considera Foll. código común de área de retorno de un círculo.
public interface TwoDimensional{
double PI = 3.14;
}
public class MyUtility implements TwoDimensional{
public static double getCircleArea(double radius){
return PI*radius*radius;
}
}
Aquí, se puede ver que el método getCircleArea() depende del radio que será diferente para diferentes clases, pero aún así puede pasar este valor con el método estático de clase myUtility.
Imposible responder sin contexto; mucho depende de cuán estrechamente relacionadas estén las clases existentes, cómo se usan las clases y los métodos, etc. –
Tiene que decirnos más acerca de estos métodos, si comparten el mismo comportamiento y podrían actuar independientemente de cualquier clase, luego tener utilidad. las clases con métodos estáticos tendrían sentido. Si está pensando en usar clases abstractas/clases base/interfaces, debe considerar si esa jerarquía de clases tendría sentido, y si estas funciones son realmente intrínsecas al comportamiento de esas clases o, como se mencionó anteriormente, a esos métodos no les importa sobre la clase de la que forman parte. – birryree
¿Puede explicarme qué hace el método y si todas esas clases están relacionadas? –