Да, это хорошая идея, особенно если ваши классы выполняют разные роли. Abc и Xyz могут быть не лучшими примерами, но что-то вроде ICanValidate, IHaveDefault, IHaveAnEngine и т. Д. Может быть лучше:)
Где такой дизайн сияет, когда определенные функции не являются обязательными. Возьмите пример ICanValidate: где-то в вашем постоянном конвейере вы safe приводите свою сущность к ICanValidate. Если он возвращает ноль, то вы игнорируете его; однако, если он возвращает интерфейс, вы можете позвонить entity.IsValid()
.
Просто записка о кастинге. В некоторых ответах говорится, что вам не нужно приводить при реализации интерфейса. Это верно для неявной реализации - для явной реализации вам понадобится приведение. Но я думаю, это было бы довольно очевидно:)