Python PureMVC与Pubsub

2024-09-26 22:10:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个python应用程序,我想用MVC实现它。我本来打算用pubsub来完成这个任务,但是我遇到了PureMVC。在

有谁能给我解释一下这两件事,它们之间的区别,以及用一个代替另一个的含义。在


Tags: 应用程序pubsub两件事含义mvc区别puremvc
1条回答
网友
1楼 · 发布于 2024-09-26 22:10:33

我想你指的是我非常了解的pypubsub(我是作者;)。但是我对PureMVC for Python知之甚少。在

基于PureMVC文档,这两种方法非常不同。根据浏览文档和听演示文稿,我认为在选择时有一些区别:

  • 学习曲线:
    • 将pypubsub合并到你的应用程序中很容易:决定“消息主题”,订阅方法和函数,为这些主题添加发送消息。消息传输到目的地是自动的。“巡航速度”API很小:您需要学习pub.subscribe和{}就这样。在
    • 使用PureMVC,您必须了解中介器、命令、代理等,这些都是功能强大的概念,您必须提前了解这些概念的重要功能。在你从“了解”它们的用途到“理解”何时/如何使用它们之前,你甚至需要编写几个应用程序。对于一个应用程序,开销有时是值得的。如果您创建了许多使用该框架的应用程序,那么这很可能是值得的。在
  • 对应用程序设计的影响:
    • PyPubsub:匿名观察者设计模式。在
    • PureMVC:MVC架构模式。在
    • 没有与pypubsub“标准使用”一起使用的类。大多数情况下,您必须将消息分类到主题中,并决定将哪些内容作为数据包含。这可以相当有组织地发展:您需要一个新的对话框,并且需要使它的某些状态可用,这样当更改一个字段时,标签会在其他地方更改:您只需在对话框中包含一个发布,并在更新标签的代码中包含订阅。如果有的话,pypubsub允许您不必担心设计;或者更确切地说,它允许您将设计重点放在功能上,而不是如何从一个地方到另一个地方获取数据。在
    • 对于PureMVC,有许多类可供使用,它们要求您设计组件以从它们派生、注册并实现基类功能。不明显的是,您可以轻松地从应用程序的一个位置发布数据并在另一个位置捕获数据,而无需创建几个新的类并实现这些类,以便它们在被框架调用时执行正确的操作。当然,在某些情况下,开销(设计时间)是值得的。在
  • 可重用性:
    • 只要一个组件记录它发布的消息主题和它所侦听的内容,它就可以被合并到另一个应用程序中,对行为进行单元测试等。如果其他应用程序不使用pypubsub,则很容易添加,对体系结构没有影响。并非所有的应用程序都需要使用pubsub,它只能在需要的地方使用。在
    • o因此,PureMVC组件只能并入已经基于PureMVC的应用程序中。在
  • 可测试性:
    • PureMVC通过跨层分离关注点来促进测试:视觉、逻辑、数据。在
    • 而publish-subscribe(pypubsub)则通过在发布者和消费者之间进行分离而简化了这一过程,而不考虑层。因此,使用pypubsub进行测试包括让测试发布组件使用的数据,并订阅组件发布的数据。而对于PureMVC,测试必须假装是可视化和数据层。我不知道在PureMVC中这有多容易。在
    • 如果没有合适的工具,每个发布-订阅系统都可能变得很难调试,一旦应用程序达到一定的大小:就很难跟踪消息的路径。Pypubsub提供了有助于此的类(在开发期间使用),以及验证发布者和侦听器是否兼容的功能。在
    • 在我看来,基于PureMVC图,类似的问题也会出现:您必须通过外观来跟踪代理、命令和中介器,以找出出问题的原因。我不知道PureMVC提供了什么工具来处理这件事。在
  • 目的:
    • 观察者模式是指如何通过一种“数据总线”将数据从一个地方传输到另一个地方;只要组件可以连接到总线上,就可以在不知道源或汇的情况下进行状态交换。在
    • PureMVC是一种体系结构模式:它的工作是使您能够更容易地从视图、控制和数据方面描述应用程序。模型不关心控件如何与它交互;控件不关心它是如何显示的;但是视图需要控件提供特定的服务来处理用户操作,并获得要显示的所需数据子集(因为通常不会显示所有可用的数据),而控件需要模型提供特定的服务(要获取数据、更改数据、验证数据、保存数据等),控件需要在适当的时间实例化视图组件。在
  • 互斥:根据文档,我认为没有理由阻止这两个库在同一个应用程序中使用。他们工作在不同的层次,他们有不同的目的,不能共存。在

所有的去耦策略都有利弊,你必须权衡每种策略。学习曲线、投资回报率、可重用性、性能、可测试性等

相关问题 更多 >

    热门问题