Здравствуйте, Pharod, Вы писали:
P>Если работа идет с некой "недоменной" областью — то есть technology for technology — то как правило всегда использую только интерфейсы.
Я встречал в таком виде: "Если задумался над тем, класс это или интерфейс, то это интерфес". Задачи с "недоменной" областью в этом смысле, пожалуй, проще анализировать.
P>Если проектируется часть соотв. некой доменной области — простой подход такой: P>Интерфейсы описывают в большей степени свойства объектов, в то время как классы — это is a отношение. P>Абстрактный класс Cat это куда сильнее чем некий интерфейс Feedable. Интерфейсы позволяют описать некую общность поведения, P>в то время как абстрактные классы это еще и общность состояний и свойств.
Ваши аргументы приняты. Попробую уточнить вопрос.
Классический пример — "простой графический редактор". Идем по классическому пути: редактор работает с фигурами. Треугольник, круг, квадрат. Логично предложить их в качестве кандидатов в классы. Абстрактный класс Фигура тоже выглядить уместным.
Теперь добавим в редактор точку. Точка — это фигура? Или правильнее выделить интерфейсы Drawable, Resizeable, etc?