Множество файлов.java с одним открытым интерфейсом и одной функцией
Я понял, что каждый публичный интерфейс должен быть помещен в отдельный файл.
Возможно, я делаю что-то не так, но это вынуждает меня создавать много пустых файлов почти без содержимого внутри.
Когда кто-нибудь просматривает мою папку с пакетом, чтобы понять, что происходит, и каждый второй файл.java будет ничем иным, как однострочным общедоступным интерфейсом... он будет недоволен.
Другими словами, мне кажется, что классы, которые на самом деле имеют некоторый контент, будут потеряны в море пустых файлов публичного интерфейса.
Есть ли какие-то стратегии для борьбы с этим неудобством?
РЕДАКТИРОВАТЬ: описание ситуации (и пример):
Я делаю какую-то игру. У меня есть много классов, полученных от родителя GameObject
который реализует некоторые поведения, но не в простой иерархической структуре. Поскольку Java не разрешает наследование от нескольких родителей, я должен сделать это с помощью интерфейсов. Большинство классов реализуют несколько интерфейсов, но являются лишь подмножеством всех внутренних интерфейсов. Интерфейсы не соответствуют структуре наследования.
Пример:
учебный класс Tank
это ребенок MilitaryUnit
(который реализует интерфейс Fighting
) но он также реализует интерфейсы Vehicle
,Drawable
,IndustrialProduct
,Tradable
,SaveFileItem
,StringIO
,TableIO
,MouseInteracting
,KeyboardInteracting
... так далее.
с другой стороны Rifleman
который также является ребенком MilitaryUnit
не реализует IndustrialProduct
,Tradable
а также ArmoredTrain
(также ребенок MilitaryUnit
) осуществляет Train
интерфейс, в то время как Tank
а также Rifleman
не.
Другие классы, такие как Commodity
инвентарь IndustrialProduct
,Tradable
,StringIO
,TableIO
но нет Vehicle
,Drawable
,MouseInteracting
,KeyboardInteracting
Таким образом, ситуация может быть описана с помощью некоторой таблицы (которая указывает, реализует ли некоторый класс некоторый интерфейс или нет), которая будет выглядеть примерно так:
Interface X Y Z W
ClassA 1 1 0 1
ClassB 0 1 1 1
ClassC 0 1 0 1
ClassD 1 0 1 0
1 ответ
Если вы создаете интерфейс, который будет реализован только в одном классе, интерфейс не будет использоваться. Интерфейс используется для создания функции, необходимой для многих классов. Реализация обычно используется, когда рассматриваемый класс не является экземпляром того, что вы хотите, чтобы он делал (это было бы подклассом), но должен включать в себя определенные значения, которые вы надеетесь достичь посредством реализации.