我有一个设计困境。我有一个名为UserAccount的类,它代表一个能够登录学校系统并访问他/她正在学习的课程,头像,新闻等信息的用户。然后还有另一个名为Course的课程代表任何给定的课程在这所学校。它包含的信息包括本学期学习该课程的学生数量,课程编号等等。
所以UserAccount有这样的方法
UserAccount user = new UserAccount("username", "password");
user.login();
Array<Courses> courses = user.getCourses();
此方法getCourses()将返回一系列课程,其中包含用户正在学习的课程。显而易见,对象用户持有对他/她正在进行的课程的引用。
但是,这是我的问题,课程必须从服务器访问信息(使用REST),但所有请求必须与会话cookie和一些用户的信息一起发送。所以不知何故,课程必须知道哪个用户正在尝试获取信息。对我来说,似乎错误的是该课程持有对用户的引用并且必须将用户作为参数传递给需要此信息的课程方法似乎也是错误的。
有没有人有更好的解决方案?
注意:我无法控制系统的设计方式,我应该告诉实际上没有公共API,我正在废弃html响应,所以我不知道如何系统已实施,我不需要检查学生参加哪些课程,该信息由服务员通过简单的请求提供。正如我之前所说的问题是,当我必须向服务器发出请求时(关于课程信息)我必须发送会话cookie和其他一些不被用户对象保存的公共信息,因为用户必须是登录以从系统获取信息。问题是,该课程应该引用学生并不自然。
答案 0 :(得分:0)
只需检查学生的课程数组,看他是否参加了他试图访问的课程,你已经在学生班上有这些记录,除非用户可以自由地改变他的课程而没有任何限制(他不应该这样做) ),这样做不应该有问题。
如果您只是记录了哪些学生在课程本身中学习某门课程(P.S。数据库是如何做的),您可以避免很多麻烦。
答案 1 :(得分:0)
您的数据库设计是否包含将用户链接到课程的交叉引用表(反之亦然)?这个多对多表允许getCourses方法为所提供的用户填充课程集合(你将把userid传递给getCourses方法 - 我可以看到将userid传递给课程类会有什么问题) 。反过来,外部参照表还允许您查找参加特定课程的所有用户。如何安排方法来检索不同类中的数据取决于您如何选择考虑对象之间的关系。
答案 2 :(得分:0)
如果没有数据,课程不应该执行请求。我看到的解决方案是: