我们想编写一个API(Python库),该API提供有关我们公司中少数系统的信息。 我们真的不确定什么是实现我们想要的最佳OOP方法,所以希望您有个好主意。
API将针对每个系统公开一系列测试。每个系统都会以一个类(带有属性和方法)的形式呈现,并且所有系统都将从基类(GenericSystem)继承,该基类将包含有关该系统的基本,通用信息(例如,dateOfCreation,作者,systemType,名称,技术,所有者,等等。)每个系统都有很多实例,每个实例都有唯一的ID。有关每个系统实例的数据存储在不同的数据库中,因此API将成为所有用户可以立即查找有关这些系统的信息的地方。这些是要求:
我们希望每个用户都能够创建一个系统实例(例如SystemName类),并能够获取有关该系统的一些信息。
我们希望每个用户都能够创建一个系统(或GenericSystem)的多个实例,并能够一次获取有关所有实例的信息。 (它必须是有效的。仅一个查询,而不是每个实例一个)。因此,我们认为可能需要创建MultipleSystemNames类,该类将实现所有这些复数方法。 这似乎是最具挑战性的要求。
我们希望将数据填充并缓存到实例的属性和方法。因此,如果我创建一个SystemName实例并调用systemNameInstance.propertyName,它将运行所需的查询并将数据填充到propertyName中。下次用户将调用此属性时,将立即返回数据。
最后一个,必须保留一种系统类方法。每个系统都必须作为一个单独的系统显示。以后我们可以根据需要创建MultiSystem类(针对要求2),但是以最基本的形式,每个系统必须单独表示(希望您理解我的意思)。
第二和第四(2,4)要求是我们真正要弄清楚的要求。 我们是否应该为每个类以及GenericSystem(MultiGenericSystems)使用MultiSystemNames类?我们不想使用户和我们自己复杂化。
您知道任何OOP(或其他)最佳实践的简洁方法吗?我们错过了什么吗? 很抱歉,如果我添加了一些不必要的信息,但我真的很想让您对我们的现状感到满意。
如果您没有达到目标,谢谢!
答案 0 :(得分:0)
系统和实例表示完全相同的思想,但在不同的上下文中使用。无论如何存储或检索它们,都没有关系。因此,如果您需要系统的集合,则只需使用本机集合数据结构(例如,Java中的List,Queue,Map)。与系统/列表相关的操作必须与POJO分离。这意味着您可以在服务,存储库等中实现它们。 您存储和检索数据的方式不得影响您设计数据结构的方式。您可以通过应用不同的技术和/或使用适当的技术(例如缓存,使用键值存储或nosql数据库,对关系数据库表进行非规范化和/或使用索引等)来获得性能