Множество файлов.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 ответ

Если вы создаете интерфейс, который будет реализован только в одном классе, интерфейс не будет использоваться. Интерфейс используется для создания функции, необходимой для многих классов. Реализация обычно используется, когда рассматриваемый класс не является экземпляром того, что вы хотите, чтобы он делал (это было бы подклассом), но должен включать в себя определенные значения, которые вы надеетесь достичь посредством реализации.

Другие вопросы по тегам