OOP和GUI:在哪里实现?

时间:2019-04-28 13:09:52

标签: oop pyqt4 conventions readability maintainability

大约六个月前,我在工作中戴上了全栈开发人员的帽子,并开始使用由GUI和数据库组成的工具。客户要求使用Python编写该工具,因此我一直在与PyQt公司的许可证一起创建该接口。

这是我有史以来创建的第一个此类工具,并且运行良好,但是当我将PyQt的各种GUI元素子类化时,这个问题一直困扰着我:“我应该在哪里实现呢?”

例如,该工具的功能之一涉及向用户提供要填写的表单(这是子类GUI元素),然后提交完整的表单以存储在数据库的一个表中,这是非常标准的东西。用户填写表单,然后按“提交”按钮,对表单的字段进行验证以确保它们遵守某些约束,然后在数据库中调用存储过程以提交表单数据。让我们将该函数称为Submit()。

很显然,有许多种方法来构造代码,但是我一直在尝试的三大方法是:

  1. 直接在表单的类主体中实现commit()作为其方法之一
  2. 在类外创建函数,并让类本身调用它们
  3. 创建一个“处理程序”类,以单击“提交”按钮后发出的信号来接收表单的字段

我的问题是:其中哪一个(如果有的话)是“最佳”的方式?当我说“最好”时,我的意思是哪一个是公认的惯例中最“ OOP式的”,以及对那些追求我的程序员来说,阅读和维护它们中最容易的。

预先感谢:)

1 个答案:

答案 0 :(得分:0)

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

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