Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/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
Model view controller MVC模型设计/继承_Model View Controller_Oop_Class_Inheritance_Model - Fatal编程技术网

Model view controller MVC模型设计/继承

Model view controller MVC模型设计/继承,model-view-controller,oop,class,inheritance,model,Model View Controller,Oop,Class,Inheritance,Model,请原谅这个模糊的标题,我不知道该如何描述它 如果您有一个通用模型“归档”,如何根据用户选择的“类型”显示不同的视图/表单 例如,用户创建一个新的“归档”,然后可以选择视频、书籍、音频等。从那里,他们可以根据归档类型获得不同的形式 或者将它们分成不同的模式——视频、书籍、音频,会更好吗 或者模型可以继承(如视频扩展存档)。我猜这是基本的OOP/类,但不知道如何在这里应用它 欢迎来自任何MVC框架的示例 您的模型视频、书籍和音频可以从存档中继承 每个模型都有一个控制器 在创建相应的模型之前,您必须

请原谅这个模糊的标题,我不知道该如何描述它

如果您有一个通用模型“归档”,如何根据用户选择的“类型”显示不同的视图/表单

例如,用户创建一个新的“归档”,然后可以选择视频、书籍、音频等。从那里,他们可以根据归档类型获得不同的形式

或者将它们分成不同的模式——视频、书籍、音频,会更好吗

或者模型可以继承(如视频扩展存档)。我猜这是基本的OOP/类,但不知道如何在这里应用它


欢迎来自任何MVC框架的示例

您的模型视频、书籍和音频可以从存档中继承

每个模型都有一个控制器

在创建相应的模型之前,您必须让用户选择他们想要的归档类型

编辑(回应评论)

在ASP.NET MVC中,您的模型将是一个类

public class Video : Archive
{  
    public int Id {get;set}
    public string Name {get;set;}     
    ...
}
您还将拥有一个控制器

public class VideoController : Controller
{
    public object Edit(int id)
    {
        Video myVideo = GetVideo(id);
        return View("Edit", myVideo);
    }
     ...
}
您将在Views目录中拥有一个视图,例如,包含

public class Edit : View<Video>
{
    ...
}
公共类编辑:查看
{
...
}
如果你有一个URL是


这一切都是从内存中完成的,因此可能会有一些错误,但是带回家的消息是您在模型中指定了继承。模型只是一个类。在您的情况下,您希望从存档中继承。完成后,模型将正常传递。

您的模型可以从存档中继承视频、书籍和音频

每个模型都有一个控制器

在创建相应的模型之前,您必须让用户选择他们想要的归档类型

编辑(回应评论)

在ASP.NET MVC中,您的模型将是一个类

public class Video : Archive
{  
    public int Id {get;set}
    public string Name {get;set;}     
    ...
}
您还将拥有一个控制器

public class VideoController : Controller
{
    public object Edit(int id)
    {
        Video myVideo = GetVideo(id);
        return View("Edit", myVideo);
    }
     ...
}
您将在Views目录中拥有一个视图,例如,包含

public class Edit : View<Video>
{
    ...
}
公共类编辑:查看
{
...
}
如果你有一个URL是


这一切都是从内存中完成的,因此可能会有一些错误,但是带回家的消息是您在模型中指定了继承。模型只是一个类。在您的情况下,您希望从存档中继承。一旦你完成了这项工作,模型就可以正常传递。

在我看来,支持MVC的一个要点是,如果用户需要的只是一个不同的视图,那么你可能不需要定制模型(或控制器,你只需要一个)。只有在存储(持久性)体系结构规定需要时,才会出现多个模型。如果您需要多个模型,一些特性(如数据访问对象(DAO))可能会显示为控制器和模型之间的另一层

以该项目为例。正如Struts for Newbiers中所述,“要很好地使用Struts,掌握基本原理非常重要。从回顾开始,学习任何不熟悉的主题。”


关于另一个资源,请参阅(Sun J2EE蓝图)

在我看来,支持MVC的一个要点是,如果用户需要的只是一个不同的视图,您可能不需要自定义模型(或控制器,您只需要一个)。只有在存储(持久性)体系结构规定需要时,才会出现多个模型。如果您需要多个模型,一些特性(如数据访问对象(DAO))可能会显示为控制器和模型之间的另一层

以该项目为例。正如Struts for Newbiers中所述,“要很好地使用Struts,掌握基本原理非常重要。从回顾开始,学习任何不熟悉的主题。”


有关另一个资源,请参阅(Sun J2EE蓝图)

,以实际显示不同的视图在任何MVC框架中都应该很容易。例如,在Microsoft ASP.NET MVC中,您不会像以下那样仅从控制器返回视图:

return View();
但实际上会将视图的名称声明为参数:

return View("VideoArchive");

在任何MVC框架中,从Views/Archive/VideoArchive.aspx实际显示不同视图都应该很容易。例如,在Microsoft ASP.NET MVC中,您不会像以下那样仅从控制器返回视图:

return View();
但实际上会将视图的名称声明为参数:

return View("VideoArchive");

这将显示Views/Archive/VideoArchive.aspx中的视图,您似乎不希望该类型继承自存档。 “总是喜欢封装/包含而不是继承”

为什么不创建一个名为Archive的类并为其指定一个type属性呢。该类型可以使用继承来专门处理音频、视频等

您似乎会根据其他一些标准专门化归档。“FileSystemArchive”、“XMLArchive”、“SQLArchive”和类型不会更改。但是我内心的敏捷主义者说,一开始可能不需要这样做,以后你可以随时重构设计


就控制器而言,通过封装视图中每种类型的表示差异,您可能会获得最大的收益。因此,只有视图会根据类型进行更改。可能每种类型的语义和规则都是相同的,您不需要为每种类型使用单独的控制器。每个类型的视图都不同,因为它具有不同的属性

似乎您不希望该类型从存档中继承。 “总是喜欢封装/包含而不是继承”

为什么不创建一个名为Archive的类并为其指定一个type属性呢。该类型可以使用继承来专门处理音频、视频等

您似乎会根据其他一些标准专门化归档。“FileSystemArchive”、“XMLArchive”、“SQLArchive”和类型不会更改。但是我内心的敏捷主义者说,一开始可能不需要这样做,而且你可以随时重构设计