Принципы, лежащие в основе программирования интерфейса, не должны быть оставлены только для интерфейса.Когда вы разрабатываете свои интерфейсы, вы задаете общие вопросы: «Где я ожидаю, что это будет использовано? Кем? И для какой цели?»Вопросы, которые следует задавать даже при создании классов реализации.
Может случиться так, что при разработке интерфейса вы поймете, что вам не нужно делать его интерфейсом, и для тестирования будет достаточно перегрузки и наследования.Как упоминалось в первой статье, если вы последовательно получаете соотношение 1: 1 между объектами и интерфейсами без цели, кроме «Я программирую на интерфейсах», вы просто вносите беспорядок в свой код.
Но это не значит, что вы не можете разрабатывать класс так, как если бы вы создавали интерфейс / базовый класс для него с набором общих методов / свойств / полей, которые предоставляют базовую функциональностьа затем добавьте другие методы / свойства / поля, более специфичные для реализации.ИМО, тем не менее, подпадает под принципы программирования интерфейса.Кроме того, это, безусловно, оставит открытой дверь для вас, чтобы извлечь интерфейс / базовый класс, когда возникнет ясная и определенная потребность.