Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class 访问与其他两个类相关的类_Class_Class Design_Oop - Fatal编程技术网

Class 访问与其他两个类相关的类

Class 访问与其他两个类相关的类,class,class-design,oop,Class,Class Design,Oop,给定以下表格:User、Trial、UserTrial。如果用户有多个试用期,试用期不会在内部映射到任何用户,并且包含有关试用期的详细信息(名称、说明、设置),而UserTrial包含特定于用户试用期实例的信息(例如到期日期)。MVC应用程序的控制器访问UserTrial数据的正确方式是什么 其他细节 没有ORM 每个类都有双重用途,可用于创建新用户或加载现有用户、试用或用户试用。构造函数在传递ID时加载数据,并使用方法->save()将其持久化 似乎有两种选择: 1. User.SetTr

给定以下表格:User、Trial、UserTrial。如果用户有多个试用期,试用期不会在内部映射到任何用户,并且包含有关试用期的详细信息(名称、说明、设置),而UserTrial包含特定于用户试用期实例的信息(例如到期日期)。MVC应用程序的控制器访问UserTrial数据的正确方式是什么

其他细节
  • 没有ORM
  • 每个类都有双重用途,可用于创建新用户或加载现有用户、试用或用户试用。构造函数在传递ID时加载数据,并使用方法->save()将其持久化
似乎有两种选择:

1. User.SetTrial() User.GetUserTrial()

2. UserTrial.SetUser() UserTrial.SetTrial() UserTrial.GetSomeData()


哪个是最合适的用法?

我认为您的选项1不起作用,因为如果每个用户都可以有多个试用,那么您将需要类似User.AddTrial(试用)、User.RemoveTrial(试用)、User.getUserTrails()的内容

选择哪种设计选项取决于您是否希望将UserTrial对象设置为“第一类”。你想把用户和试用做为主要的对象吗?用户名试用对象只是粘着来保持关系,或者你想要USER试用对象也是主要的吗?如果是前者,你会想要像选项1一样的东西;如果是后者,您将需要类似于选项2的内容