Страницы

Поиск по вопросам

среда, 29 января 2020 г.

Почему в этом методе лучше полиморфизм?

#ооп #полиморфизм


Читаю книгу "Совершенный код", проходя раздел автор привел пример метода, который
лучше было бы заменить полиморфизмом:

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(); }

Комментариев нет:

Отправить комментарий