Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.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
Java 如何为Struts MVC创建此模型?_Java_Model View Controller_Model_Core - Fatal编程技术网

Java 如何为Struts MVC创建此模型?

Java 如何为Struts MVC创建此模型?,java,model-view-controller,model,core,Java,Model View Controller,Model,Core,我有一个大学管理门户。我必须创建以下类来描述模型 class Address { String street; String city; } class Contact { String phone; String mobile; } abstract class Person { String name; String age; Address address; Contact contact; } class Student ext

我有一个大学管理门户。我必须创建以下类来描述模型

class Address
{
    String street;
    String city;

}

class Contact
{
   String phone;
   String mobile;
}

abstract class Person
{
   String name;
   String age;
   Address address;
   Contact contact;
}

class Student extends Person
{
   String course;
   String stream;
   String rollno;
}

class Faculty extends Person 
{
   String department;
   String faculty id;
}
现在我应该使用getter setter方法来初始化实例还是使用构造函数

那么类中的聚合情况如何


构造函数应该如何工作呢?

是的,我认为应该为模型对象提供getter和setter方法。类的属性应该是私有的。 构造函数用于允许为对象构造传递必需的信息,如果没有这些信息,就无法生成对象(或者对象是无用的)。就像你不能创造一个没有名字和年龄的人。在您的情况下,地址和联系人可能是可选的。因此,您可以使用mutator方法设置地址/联系信息

正如Srinivas提到的,构造函数不是mutator方法的替代品。
构造函数的目的是为对象构造提供必需的东西。这就像没有原材料,你无法建造一座建筑。

对于这些东西,你需要“bean”=私有成员变量,每个变量都有getter和setter。根据您的需要,您可以创建一个构造函数,在实例化时在对象中设置某些参数,但也可以不直接通过setter(因为某些setter可能以某种方式对设置的值进行操作,所以最好不要直接处理像这样的内容。student=“name”)

对于教职员工的案例,我不明白为什么它会延伸到人身上,我认为也不应该。正如您所说的,这些是模型,它们应该反映数据库中表的结构,因此它们中的每一个最多只能扩展一个抽象类或实现某个接口,而不能相互实现

对于person聚合,我还认为Contact和Address应该是整数,因为它们在另一个表中表示外键,并考虑多对多关系的情况


模型首先是数据库在应用程序中的反映。

构造函数不是setter的替代品。实际上,我不想让用户知道我在Person类中使用了Contact和address类。我只是让他们直接使用学生和教员的课程。那么,我的学生类构造函数的形式应该是什么呢?我想我必须创建一个参数化构造函数,它将有9个参数。[3个学生类属性,2个个人类属性,2个联系人类道具和2个地址类道具]。我说的对吗?正如你提到的,你不想让你的用户知道你的类的结构,你可以有一个工厂来创建任何人,在那里你把所有信息作为参数传递,然后构造所需的对象来构建person对象。但是我不明白为什么你不想让用户知道联系人和地址对象。事实上,我很好奇这是怎么回事!!Getter和Setter方法或accessor方法称为mutator方法。模型对象不一定是表表示。它们用于存储域对象的信息,也可以构建来将信息传输到应用程序中的其他层,以提供松散耦合。教员必须在那里。数据库将基于该模型。对于学生班和教师班,最好使用构造函数,并且只提供个人道具和学生道具作为参数?我如何调用Contact和Address getter和setter,而不让使用上述代码的程序员暴露于Contact和Address类。