-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathObservador.py
64 lines (47 loc) · 1.63 KB
/
Observador.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
class Tema():
#Creo lista obs
ListaObservador = []
def agregaLista(self,obj):
self.ListaObservador.append(obj)
def Notificar(self, valor) :
for observador in self.ListaObservador:
observador.Update(valor)
self.ListaObservador.clear()
def Quitar(self, obj):
pass
class TemaConcreto(Tema):
def __init__(self) :
self.estado = None
def SetEstado(self,valor):
self.estado = valor
self.Notificar(valor)
def GetEstado(self):
return self.estado
class Observador:
@property
def Update(self):
raise NotImplementedError ("A implementar")
class ConcreteObserverAlta(Observador):
def __init__(self, obj):
self.observadorA = obj
self.observadorA.agregaLista(self)
def Update(self,val):
print("Actualización dentro de ObservadorConcretoAlta")
self.estado = self.observadorA.GetEstado()
print("Informacion ingreso Alta = ", self.estado)
class ConcreteObserverBaja(Observador) :
def __init__(self, obj) :
self.observadorA = obj
self.observadorA.agregaLista(self)
def Update(self, val) :
print("Actualización dentro de ObservadorConcretoBaja")
self.estado = self.observadorA.GetEstado()
print("Informacion baja id = ", self.estado)
class ConcreteObserverMod(Observador) :
def __init__(self, obj) :
self.observadorA = obj
self.observadorA.agregaLista(self)
def Update(self, val) :
print("Actualización dentro de ObservadorConcretoMOD")
self.estado = self.observadorA.GetEstado()
print("Informacion MODIFICACADA = ", self.estado)