#ооп #полиморфизм
Читаю книгу "Совершенный код", проходя раздел автор привел пример метода, который лучше было бы заменить полиморфизмом: switch (shape.type) { case Shape_Circle: shape.DrawCircle(); break; case Shape_Square: shape.DrawSquare(); break; ... } Цитата из книги: "Здесь методы shape.DrawCircle() и shape.DrawSquare() следует заменить на единственный метод shape.Draw(), поддерживающий рисование и окружностей, и прямоугольников." Не могу понять, смысл от создания нового метода, если все равно придется писать оператор switch в другом методе, можете подробнее объяснить, чем такой подход лучше?
Ответы
Ответ 1
public abstract class Shape { public abstract void Draw(); } public class Circle : Shape { public override void Draw() { // implement drawing of a circle } } public class Square : Shape { public override void Draw() { // implement drawing of a square } } public class SomeUnforeseenShape : Shape { public override void Draw() { // draw Mona Lisa } } public void DrawShape(Shape shape) { shape.Draw(); }
Комментариев нет:
Отправить комментарий