用户类设计问题
本文关键字:问题 用户 | 更新日期: 2023-09-27 18:27:56
嗨,我想知道是否有人能解决我的问题。我试着寻找解决方案,但不知道从哪里开始寻找。
我正在尝试创建我自己的用户系统,其中用户详细信息保存在数据库中。
我有一个用户类,它包含用户信息,例如id、名字、姓氏和用户类型。用户类型为普通用户、主持人、管理员。
我的问题是UserType。有时是字符串,有时是int,我不知道如何创建一个类来处理这个问题,而不重复该类,但其中一个UserType为int,另一个为string。
例如1=管理员2=慢化剂
此外,user类会返回不同的信息,例如,我只想包含名字和姓氏,有时我想包含username和active和not active。
再次,我不想为每个创建一个单独的类,但我不想带回我不需要的数据。
什么是最好的方法?
您有几个问题,可能应该分开。。。
我的问题是UserType。有时是一根绳子,有时是一个内部
那就别那样做了。这是一个有点老套的答案,但你的用户类型要么是字符串,要么是int。弄清楚它到底是哪一个,或者你想让它成为哪一个。
您可以使用枚举,当然这些枚举是硬编码的,因此您无法轻松添加或删除,但它们至少可以让您将字符串桥接到int除法。
如果你需要同时使用这两种方法,最好是在数据库中进行查找(即一个将字符串与int匹配的表),然后在某个地方有一个方法来查找它(可能只从数据库中获取一次转换,然后缓存它们,而不是对每次查找进行DB调用)。
用户类还会返回不同的信息,例如只想包含名字和姓氏,有时我想包含username和active和not active。
再说一遍,我不想为每个创建一个单独的类,但我不想想要带回我不需要的数据。
有多少数据?在大多数情况下,如果你每次都回购所有数据,你就不会考虑太多开销,而且这会更容易,因为你总是知道用户对象包含了它需要的所有信息。如果你特别担心获得大量不需要的数据,你可以看看Lazy Loading,它可能会做你想做的事。不过,您可能会发现,在数据库的数据请求中添加一个"活动"标志的开销要比在您决定需要该信息的情况下进行第二次数据库调用的开销小得多。
从本质上讲,除非用户有大量相关数据,否则这很可能会成为性能瓶颈。用户名、名字和第二个名字以及通常以字节为单位的东西不太可能给你带来问题,所以在你能够证明它们是性能瓶颈之前,我不会担心。在这一点上,你可以担心懒惰加载或类似的问题来解决你的问题。