У меня есть один интерфейс, который содержит четыре функции. У меня есть около 20 классов, которые реализуют этот интерфейс. В каждом классе я вижу много повторяющегося кода, например, в начале объявлены константы, которые есть в каждом классе. Реализации метода (логика) интерфейса в основном одинаковы. Он содержит повторяющиеся структуры. Это тот случай, когда я могу устранить много дублирующих классов, реализуя абстрактный интерфейс вместо интерфейса. То, к чему я стремлюсь, это слишком уметь помещать обычные методы из абстрактного класса в качестве неабстрактных методов, и тогда методы, которые нуждаются в собственной реализации, будут помечены как чрезмерно читаемые. Могу ли я поместить константы и структуры в абстрактные классы? Если это так, это устранит большое количество дублирующегося кода между классами. Есть ли что-то еще, на что я должен обратить внимание в классах как знак того, что мне, вероятно, следует использовать абстрактный класс вместо интерфейса.