준비가되었을 때 "준비 됨"이벤트를 발생시키는 Foo라는 클래스가 있다고 가정 해보십시오.동적 이벤트 조건
from observer import SubjectSet
class Foo:
def __init__(self):
self.events = SubjectSet()
self.events.create('ready')
def do_sth(self):
self.events.fire('ready')
본 것처럼 do_sth 메소드는 Foo 클래스의 준비 인스턴스를 만듭니다. 그러나 하위 클래스는 준비 준비 이벤트를 보내기 전에 수행해야하는 새 작업/조건을 추가하려고합니다.
이 문제를 해결하기 위해 TaskPool, Task, ObserverTask라는 새로운 클래스 집합을 코딩했습니다. 그들은이 같은 푸 클래스에 의해 사용되는 : 그것은 TaskPool을 화재 "성공"이벤트 때
from observer import SubjectSet
from taskpool import TaskPool, ObserverTask
class Foo:
def __init__(self):
self.events = SubjectSet()
self.events.create('task1')
self.events.create('task2')
self.events.create('ready')
task1 = ObserverTask(self.events.get('task1'))
task1 = ObserverTask(self.events.get('task2'))
self.tasks = TaskPool()
self.tasks.append(task1, task2)
self.tasks.events.add_listener('success',self.events.subjects.ready.emit)
def complete_task1(self):
self.events.fire('task1')
def complete_task2(self):
self.events.fire('task2')
지금, 그것은 "준비"이벤트가 발생합니다. 예상대로, Foo를 확장 할 클래스는 준비 이벤트를 시작하기 전에 완료해야하는 새 태스크를 정의 할 수 있습니다. 그런데 거의 모든 작업이 비동기입니다.
문제의 좋은 해결책이라고 생각하십니까? 나는 더 나은 해결책을 찾고 있었지만 올바른 검색 문구를 모른다 고 생각합니다.
감사합니다.