我很难理解模型视图控制器的概念。
据我所知,这个模型的目的是将整个系统划分为3个PARTS。一部分负责数据和行为及数据,一部分用于UI,另一部分负责这两者之间的交互。
但这是我的问题:如何从概念到实施大项目?
我的老师有这个UML类模型,其中只有3个类,但整个系统的行为如何才能成为一个类?
模型类更像是所有模型必须实现的接口吗?
为什么这个问题有所不同:当你有一个完成所有东西的课程(比如计算器)时,我会了解模型的工作原理,但如果我需要多个课程来处理更复杂的系统呢?
希望你们提出我的问题
答案 0 :(得分:0)
MVC是复合模式之一,即它由三种其他设计模式组成:
策略 - 此处,Controller提供了处理来自View的用户输入的方法。查看用户对Controller的委托操作,Controller知道该怎么做。
Observer - Controller,以及View需要知道模型何时发生变化,因此View是可观察的,另外两个是观察者。稍微修改可以定义一个观察者 - 控制器并使其根据变化更新视图。
复合 - 它是一种表示GUI的方式。
了解这三种模式,然后您将完全了解如何实施更复杂的系统。
此外,您可以谷歌短语: MVC作为整合模式。
答案 1 :(得分:0)
模型表示实现逻辑,管理数据和定义应用程序行为的应用程序部分。该模型回应:
查看会再现模型的内容。它准确指定了如何呈现模型数据。每当模型数据发生更改时,视图都必须根据需要更新其表示。
控制器负责处理用户请求。它是客户端和系统之间的链接,并确保正确委派完成任务所需的所有资源。
一旦控制器知道需要执行哪个操作,它就会将渲染过程委托给View层。
换句话说,用户使用控制器。控制器操纵模型。该模型更新用户在特定请求后看到的视图。
关于实现,您可以为控制器创建一个类,该类包含对模型管理器类的引用,并根据用户请求调用该对象引用上的方法。例如:
case "List":
view.show("" + model.getAll());
break;
case "Add":
String input = view.get("title");
String input1 = view.get("artist");
String track1 = view.get("Track title");
String track2 = view.get("Track artist");
if (input == null) return;
String msg= "";
view.show(msg);
CdTrack cdTrack = new CdTrack(track1, track2, new Time(0,0,0));
CdTrack[] cdsTrack = {cdTrack};
model.addCd(new Cd(input,input1,cdsTrack));
view.show(msg);
break;
视图类应将请求传递给控制器。例如:
@Override
public void actionPerformed(ActionEvent e)
{
if(((JButton) e.getSource()).getText().startsWith("List"))
controller.execute("List");
if(((JButton) e.getSource()).getText().startsWith("Add"))
controller.execute("Add");
}