Мне хочется, чтобы интерфейс мог состоять из методов, которые выполняются в нескольких классах.Если бы я мог это сделать, я мог бы создать интерфейс для роли, в которой есть одна функция из этого класса и одна функция из этого класса.
Поддерживает ли это какой-либо язык?Возможно ли это в типичном OO в стиле Java / C # / VB.NET?
Например: у меня есть функция, которая принимает объект значения и сохраняет все части в правильные таблицы.Я только что создал интерфейс под названием StatsPersistence
, который я вставляю в функцию, чтобы я мог тестировать ее поведение, но в ней отсутствует метод.Я хочу иметь возможность добавить к этому метод, но этот метод находится в классе, отличном от первых двух, так что это, очевидно, невозможно.Итак, у меня есть 2 метода в одном классе и 1 в другом, но оба они необходимы для «роли» «StatsPersistence».Кроме того, все эти методы необходимы и для других ролей, не только для этой.
Что у меня есть:
interface StatsPersistence
public saveSession(session) // fulfilled in much larger StatsActiveRecord
public saveAppUse(appUse) // fulfilled in much larger StatsActiveRecord
Что я хочу:
interface StatsPersistence
public saveSession(session) // fulfilled in much larger StatsActiveRecord
public saveAppUse(appUse) // fulfilled in much larger StatsActiveRecord
public updateUnit(name) // fulfilled in much larger UnitActiveRecord
Я мог бы просто создать новый класс, который обернул бы все три метода, и сделать так, чтобы этот класс просто делал вызовы двум реализаторам, но это похоже на множество OOverkill.наклоняясь к:
- Моя роль интерфейса слишком широка
- Создайте класс, который объединяет эти три, и заставьте его реализовать желаемый интерфейс