На первый взгляд, я бы сказал, что было бы лучше сделать общий код общедоступным статическим методом в открытом классе. Это позволит сделать метод полезен для любого класса, используя только
UtilityClassName.methodName();
Это лучше, что делает его конкретный метод в абстрактном супер-класса, потому что тогда вы всегда должны продлить этот супер-класса во всех классах где вы хотите использовать этот единственный метод.
Но теперь, как вы сказали, поведение метода зависит от некоторых переменных. Теперь, если это зависит от переменных экземпляра разных классов, тогда лучше добавьте этот метод в интерфейс и пусть все ваши классы реализуют этот интерфейс и имеют свою собственную реализацию.
Но опять же, если эти переменные являются постоянными значениями, то эти постоянные значения в интерфейсе. Внедрите этот интерфейс в свой класс. И снова сделайте его статическим методом в этом классе утилиты, который будет напрямую использовать эти константы.
См., Например, Рассмотрим foll. общий код возвращаемой области круга.
public interface TwoDimensional{
double PI = 3.14;
}
public class MyUtility implements TwoDimensional{
public static double getCircleArea(double radius){
return PI*radius*radius;
}
}
Здесь вы можете увидеть, что метод getCircleArea() зависит от радиуса, которая будет отличаться для разных классов, но все же я могу передать это значение статического метода класса myUtility.
Невозможно ответить без контекста; многое зависит от того, насколько тесно связаны существующие классы, как используются классы и методы и т. д. –
Вы должны рассказать нам больше об этих методах - если они разделяют одно и то же поведение и могут действовать независимо от любых классов, а затем иметь полезность классы со статическими методами имели бы смысл. Если вы думаете об использовании абстрактных классов/базовых классов/интерфейсов, вам нужно подумать о том, будет ли эта иерархия классов иметь смысл и будут ли эти функции действительно поведенческими для этих классов или, как упоминалось ранее, эти методы не волнуют о классе, в котором они участвуют. – birryree
Можете ли вы объяснить, что делает этот метод, и если все эти классы связаны? –