#ооп #полиморфизм
Читаю книгу "Совершенный код", проходя раздел автор привел пример метода, который
лучше было бы заменить полиморфизмом:
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(); }
Комментариев нет:
Отправить комментарий