OOP 和 GUI:在哪里实现什么?

OOP and GUI: what to implement where?

大约六个月前,我在工作中戴上了全栈开发人员的帽子,开始研究由 GUI 和数据库组成的工具。客户要求在Python中编写工具,所以我一直在使用公司PyQt许可证创建界面。

这是我创建的第一个此类工具,并且进展顺利,但是当我使用 class PyQt 的各种 GUI 元素时,一个问题一直困扰着我:"Where should I implement this?"

例如,该工具的其中一项功能涉及为用户提供要填写的表单(这是一个子classed GUI 元素),然后提交完成的表单以存储在数据库的其中一个表格——非常标准的东西。用户填写表单并按下 "submit" 按钮后,将验证表单的字段以确保它们遵守某些约束,然后在数据库中调用存储过程以提交表单数据。我们称该函数为 submit()。

显然有无数种方法来构建代码,但我一直在研究的 3 个主要方法是:

  1. 直接在表单的 class 主体中实施 submit() 作为其方法之一
  2. 在 class 之外创建函数并让 class 本身调用它们
  3. 创建一个 "handler" class,它在单击 "submit" 按钮时发出的信号中接收表单的字段

我的问题是:其中哪一个(如果有的话)是 "best" 的方法?当我说 "best" 时,我的意思是就公认的约定而言,哪个是最多的 "OOP-ish",以及其中哪些对于我之后的程序员来说最容易阅读和维护。

提前致谢:)

将应用程序的不同部分视为系统,每个部分都有自己的职责。例如,UI 系统、数据库系统以及它们之间实现业务规则的系统。在每个系统中,拥有与系统抽象相匹配的不同版本的业务对象;例如,UI系统中的用户录入表单,数据库系统中的用户table,业务系统中的用户模型。

然后,根据您的选项 3,通过消息和信号在不同系统之间建立通信。您必须为传递的数据有效负载决定某种协议,这样您就不会在系统之间泄漏抽象。数据传输对象是实现此目的的好方法,但您也可以发送字节或某些文本表示形式,例如 JSON。