【发布时间】:2012-08-28 19:33:47
【问题描述】:
我正在使用 Python 创建一个应用程序。
我首先设计了一个 API,它运行良好。 我现在正在设计我的 GUI。 GUI 启动一个线程,用于针对 API 执行任务。
到目前为止,我使用观察者模式来处理通过不同层的通信。 基本上,通信可以有两种类型(主要): - GUI 要求线程(以及随后的 API)开始/停止 - API 将信息返回给线程,然后传播到 GUI。
这是我正在谈论的当前架构的简单架构。 一个箭头基本上意味着“通知”。
我担心的是,当应用程序线程通信时,Gui 和 API 都会收到消息,因为他们订阅了。问题是,每条消息只能由两者中的一个阅读。
我解决这个问题的方法是将消息与 ID 一起发送。这三个元素中的每一个都有一个 id,他们知道消息是给他们的还是现在的。 但我不确定这是否是“正确的”(理解最好的)方法。如果我将来有更多的聚会怎么办?
我开始考虑某种管理器来处理通信,但它必须位于架构的顶部,我不知道如何进一步组织它:s。
我并不是要一个完整的解决方案,而是主要由更有经验的人提供想法或最佳实践;)
在这个简单的案例中,我可以继续处理多个观察者模式。 但我正在考虑将我的代码移植到服务器上。在这种情况下,我可能有不止一个线程用于应用程序,处理 API 调用将变得非常不可能。
链接到我正在谈论的代码: GUI、ApplicationThread 和 Application API。
您想查看通知和更新方法。
感谢您的任何建议!
【问题讨论】:
-
你到底用什么来实现应用线程的通信?
-
我使用自己编写的 Observer/Observable 模式,它发送一个字符串列表。第一个字符串是我想与之交谈的对象的 id,其余的是我的消息。那是你的问题吗?
-
我只是想了解所需的沟通途径。如果应用程序线程只是充当其他两者之间的断点,为什么不使用 GUI/Thread 和 Thread/Api 之间的谨慎连接?
-
如果对您有帮助,我添加了指向完整代码的链接。我不完全理解你所说的谨慎连接是什么意思。你的意思是绕过中间线程?
标签: python communication observer-pattern