(В контексте .NET для чего это стоит)
Я стараюсь не использовать наследование и редко использовать интерфейсы. Я наткнулся на кого-то, кто считает, что интерфейсы - лучшее, что сплелось. Он использует их повсюду. Я не понимаю этого и, следовательно, следующие вопросы. Я просто хочу проверить мои интерфейсы.
Если вы используете интерфейсы повсюду, я предполагаю, что вы можете предсказать будущее, ваши требования к приложениям будут прибиты и ничто не изменится в вашем приложении. Для меня, в раннем развитии, интерфейсы становятся перетаскиванием. Приложение очень динамично в течение своей жизни. Если вам нужно вычесть или добавить участников в интерфейс, многие вещи сломаются. Парень выше говорит, что создает другой интерфейс для обработки новых членов. Ничего не сломается.
Разве это не композиция? Почему бы не использовать композицию без интерфейсов? Более гибкий.
Как он обрабатывает случай, когда член должен быть вычтен из интерфейса? В принципе, он этого не делает. Все просто ломается, и это здорово, потому что теперь вы можете увидеть все затронутые области и исправить их. Вместо того, чтобы более изящно определить, где все связанные пути кода, мы должны просто вырвать части классов с помощью грубой силы?
Я думаю о программном приложении как о графике. Полный граф - наихудший случай, имеющий n (n-1)/2. Это означает, что каждый класс разговаривает со всеми классами. Путающая паутина. n-1 является лучшим, в котором они являются строгой иерархией общения. Добавление другого интерфейса только для компенсации нового необходимого члена добавляет вершину к графику, что означает больше ребер и более сильную реализацию уравнения n (n-1)/2. Композиция без интерфейсов больше похожа на миксины. Только избранные классы используют определенные методы. С интерфейсом все классы вынуждены использовать элементы, даже если они им не нужны. Подход состава/смеси не добавляет новые ненужные ребра.