请考虑我们有一个名为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的新类。他们正在使用的Foo类是这样的:
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')
现在,它触发“准备就绪”事件时,它的taskpool火灾“成功”事件。正如您所期望的那样,将扩展Foo的类可以定义在启动ready事件之前必须完成的新任务。顺便说一下,几乎所有的任务都是异步的。
您认为这是一个很好的解决方案吗?我一直在寻找更好的解决方案,但我想我不知道正确的搜索词组。
谢谢。