考虑以下假设的人员管理系统。假设每个Person
对象属于多个Group
个对象,每个Group
包含许多Person
个对象。我们可以通过向每个list
和每个Person
对象添加Group
来表示它,但是当我们创建,删除或修改对象时,我们必须保持同步。在变化时,回调在这种情况下效果不佳,因为它们可能导致无限循环。
现在假设每个Group
都有一个名称和描述。该名称存储在dict
中,以便我们可以找到哪个组使用哪个名称和描述编入索引,以便我们可以搜索它。每当组发生变化时,都需要更新这些内容。
该应用程序有一个GUI,可以显示Person
和Group
。每当对象的属性发生变化时,GUI都需要更新。
假设我们必须处理大量这样的效果。跟踪这个是相当混乱的。我可以想象这些使用属性,自定义集合甚至可能是元类。是否有任何设计模式/框架来处理这类系统?
答案 0 :(得分:3)
大多数ORM处理此问题。只需使用内存中的SQLite表,让它付出艰苦的努力。
答案 1 :(得分:1)
这非常棘手。是的,人员和组数据可以映射到关系数据库中的表,但自动更新视图更具挑战性。
幸运的是Qt(以及PyQT)有一个MVC框架可以自动处理你想要的大部分内容。数据存储组件可以使用数据库表来存储Person和Group数据。您还可以在同一基础数据模型上创建多个视图,并将它们配置为在基础数据更改时自动更新。这使用称为信号的Qt功能,视图订阅模型的信号,以便他们了解变化。
本书Rapid GUI Programming with Python and QT提供了与此类案例非常类似的示例,请参阅第14章和第15章。还可能有其他GUI框架提供类似的MVC功能,其中的视图会在基础数据发生变化时自动通知