MCPcopy Create free account
hub / github.com/RefactoringGuru/design-patterns-python / ConcreteSubject

Class ConcreteSubject

src/Observer/Conceptual/main.py:67–135  ·  view source on GitHub ↗

EN: The Subject owns some important state and notifies observers when the state changes. RU: Издатель владеет некоторым важным состоянием и оповещает наблюдателей о его изменениях.

Source from the content-addressed store, hash-verified

65
66
67class ConcreteSubject(Subject):
68 """
69 EN: The Subject owns some important state and notifies observers when the
70 state changes.
71
72 RU: Издатель владеет некоторым важным состоянием и оповещает наблюдателей о
73 его изменениях.
74 """
75
76 _state: int = None
77 """
78 EN: For the sake of simplicity, the Subject's state, essential to all
79 subscribers, is stored in this variable.
80
81 RU: Для удобства в этой переменной хранится состояние Издателя, необходимое
82 всем подписчикам.
83 """
84
85 _observers: List[Observer] = []
86 """
87 EN: List of subscribers. In real life, the list of subscribers can be stored
88 more comprehensively (categorized by event type, etc.).
89
90 RU: Список подписчиков. В реальной жизни список подписчиков может храниться
91 в более подробном виде (классифицируется по типу события и т.д.)
92 """
93
94 def attach(self, observer: Observer) -> None:
95 print("Subject: Attached an observer.")
96 self._observers.append(observer)
97
98 def detach(self, observer: Observer) -> None:
99 self._observers.remove(observer)
100
101 """
102 EN: The subscription management methods.
103
104 RU: Методы управления подпиской.
105 """
106
107 def notify(self) -> None:
108 """
109 EN: Trigger an update in each subscriber.
110
111 RU: Запуск обновления в каждом подписчике.
112 """
113
114 print("Subject: Notifying observers...")
115 for observer in self._observers:
116 observer.update(self)
117
118 def some_business_logic(self) -> None:
119 """
120 EN: Usually, the subscription logic is only a fraction of what a Subject
121 can really do. Subjects commonly hold some important business logic,
122 that triggers a notification method whenever something important is
123 about to happen (or after it).
124

Callers 1

main.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected