A prima vista, direi che sarebbe meglio per rendere il codice comune come un metodo statico pubblico in una classe pubblica. Questo renderà il metodo utile a qualsiasi classe semplicemente utilizzando
UtilityClassName.methodName();
Questo è meglio allora che lo rende un metodo concreto in un abstract super-classe, perché allora si avrà sempre bisogno di estendere questa super-classe in tutte le classi dove vuoi usare questo unico metodo.
Ma ora, come hai detto tu, il comportamento del metodo dipende da alcune variabili. Ora, se dipende dalle variabili di istanza di classi diverse, è meglio aggiungere questo metodo in un'interfaccia e lasciare che tutte le classi implementino questa interfaccia e abbiano la loro implementazione della stessa.
Ma ancora una volta se queste variabili sono valori costanti, quindi avere questi valori costanti in un'interfaccia. Implementa queste interfacce nella tua classe di utilità. E di nuovo lo rendono un metodo statico in quella classe di utilità che utilizzerà direttamente queste costanti.
Ad es. Si consideri foll. codice comune dell'area di ritorno di un cerchio.
public interface TwoDimensional{
double PI = 3.14;
}
public class MyUtility implements TwoDimensional{
public static double getCircleArea(double radius){
return PI*radius*radius;
}
}
Qui, si può vedere che il metodo getCircleArea() dipende dal raggio che sarà diverso per le classi diverse, ma ancora posso passare questo valore per il metodo statico della classe myUtility.
Impossibile rispondere senza contesto; molto dipende da quanto strettamente correlate sono le classi esistenti, come vengono utilizzate le classi e i metodi, ecc. –
Devi dirci di più su questi metodi - se condividono lo stesso comportamento e potrebbero agire indipendentemente da qualsiasi classe, quindi avere utilità le lezioni con metodi statici avrebbero senso. Se stai pensando di usare classi astratte/classi di base/interfacce, devi considerare se quella gerarchia di classe avrebbe senso, e se queste funzioni sono realmente comportamentali intrinseche a quelle classi o, come accennato in precedenza, a quei metodi non importa riguardo alla classe di cui fanno parte. – birryree
Puoi spiegare cosa fa il metodo e se tutte quelle classi sono correlate? –