В проекте генерации диаграммы у меня есть 2 класса. Один из них называется BitmapChart, а другой называется VectorChart. Все их свойства одинаковы, и они имеют одинаковые методы (с разными реализациями). Существует одно исключение, и это функция Generate(). В случае объекта BitmapChart он возвращает Stream, а в случае объекта VectorChart возвращает XmlDocument.Невозможно реализовать наследование, когда у детей есть разные типы возврата
Сначала мне показалось, что я должен использовать Inheritance, оба являются «Charts», и они имеют одни и те же свойства и методы. Но тогда я понял, что полиморфизм невозможен из-за разных типов возврата.
Есть ли принцип OO или шаблон дизайна, который мне не хватает, чтобы сделать мой код более элегантным?
Мне нравится это решение, теперь я могу рассматривать диаграмму одинаково до рендеринга. Просто из любопытства, это какой-то заводской шаблон? – BBQ
Нет, но это похоже на шаблон стратегии. В реальном шаблоне стратегии вы должны реализовать метод Chart.render() и передать экземпляр «ChartRenderer» в «Chart», но я бы не стал вводить эту зависимость без необходимости. Это решение не имеет имени паттерна, которое я знаю, это просто развязка. –