Прежде всего, если вы беспокоитесь о повторном родительском классе, то вы, вероятно, делаете наследование неправильно. Наследование должно использоваться для установления отношений «is-a», а не просто для повторного использования кода. Если вам нужно только повторное использование кода, подумайте об использовании делегирования, а не о наследовании. Полагаю, вы могли бы ввести промежуточный тип между подтипом и его родителем, но я бы позволил этой возможности управлять моим дизайном.
Во-вторых, если вам нужно использовать функциональность из базового класса, но расширьте его. И в случае использования сценария для статического метода вы можете захотеть использовать какой-либо внешний класс для хранения функциональности. Классический случай для этого в моей голове - шаблон Factory. Один из способов реализации шаблона Factory - это метод Factory Methods, статический метод для класса, который создает экземпляр этого класса. Обычно конструктор защищен так, что фабричный метод - единственный способ построить класс извне.
Один из способов подхода к повторному использованию с Factory Methods в иерархии наследования состоит в том, чтобы поместить общий код в защищенный метод и вызвать этот метод из Factory Method, а не напрямую вызвать базовый класс Factory Method из подкаталога, типа. Лучшая реализация может использовать один и тот же метод, но переместить Factory Factory в класс Factory и использовать конструкторную логику (внутреннюю, а не частную), возможно, в сочетании с методом инициализации для создания объекта. Если поведение, которое вы наследуете, является внешним от класса (дешифрование/валидация/и т. Д.), Вы можете использовать общие методы (или состав) в Factory, чтобы разрешить повторное использование между методами Factory.
Не зная цели использования статических методов, сложно дать вам точное направление, но, надеюсь, это поможет.
Любая причина, почему данный метод является статическим? – Rad