@pgamesorg

Зачем нужна абстракция в ООП?

Почему паттерн реализован через абстракцию тыц?

Нельзя было просто эти методы прописать в обычном классе?
  • Вопрос задан
  • 1152 просмотра
Пригласить эксперта
Ответы на вопрос 2
HemulGM
@HemulGM Куратор тега Python
Delphi Developer, сис. админ
Можно.

Почему? Чтоб не создавали на основе абстрактного класса объекты.
Чтобы интерпретатор тебе подсказал, что ты не описал такой-то метод (который абстрактный).
Ответ написан
Комментировать
Maksclub
@Maksclub
maksfedorov.ru
В Python нет интерфейсов, потому приходится так объявлять абстракцию без поведения.
Зачем нужна абстракция -- затем, чтобы код не завязывать на конкретный объект, а завязать на некоторые границы поведения (что и есть абстракция) -- в данном случае на некоторый SUbject
class Observer(ABC):
    @abstractmethod
    def update(self, subject: Subject) -> None:
        """
        Получить обновление от субъекта.
        """
        pass

Теперь Observer (все его потомки) в параметрах метода update() принимают ЛЮБОЙ объекта типа Subject, то есть код завязан на абстракцию, а не реализацию этих subjects и вообще ничего не знает о их названиях и индивидуальном поведении, знает только, что прилетит любая абстракция типа Subject....
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы