Я пытаюсь использовать интерфейсы чаще, и часто я помещаю события в интерфейс. Это кажется странным, потому что я оставляю за разработчиком возможность узнать, когда вызывать эти события в их реализации.
Например, у меня есть интерфейс ILevellable, который просто заявляет, что объект должен иметь xp, уровень и максимальный уровень, а также некоторые методы, которые изменяют эти значения. Классы, ссылающиеся на ILevellable, вероятно, захотят узнать, когда он выровняется, поэтому я добавляю Action для OnLevelUp ... но реализация может не поместить это в правильное место.
public interface ILevellable
{
int Level { get; }
int MaxLevel { get; }
int XP { get; }
event Action<bool> OnXPChanged;
event Action<ILevellable> OnLevelUp;
event Action OnMaxLevelReached;
void LevelUp(int newLevel);
}
Должен ли я верить, что пользователи, реализующие этот интерфейс, будут знать, где это реализовать? Я бы предположил, что нет. Тем более, что некоторые события могут иметь аргументы, которые, опять же, пользователь может не знать, что он должен представлять.
Я ценю любое руководство! Я новичок в такой работе.
Спасибо!