MVC基本概念(具有3个类的系统?)

时间:2018-06-10 07:56:31

标签: java model-view-controller

我很难理解模型视图控制器的概念。

据我所知,这个模型的目的是将整个系统划分为3个PARTS。一部分负责数据和行为及数据,一部分用于UI,另一部分负责这两者之间的交互。

但这是我的问题:如何从概念到实施大项目?

我的老师有这个UML类模型,其中只有3个类,但整个系统的行为如何才能成为一个类?

模型类更像是所有模型必须实现的接口吗?

为什么这个问题有所不同:当你有一个完成所有东西的课程(比如计算器)时,我会了解模型的工作原理,但如果我需要多个课程来处理更复杂的系统呢?

希望你们提出我的问题

2 个答案:

答案 0 :(得分:0)

MVC是复合模式之一,即它由三种其他设计模式组成:

  1. 策略 - 此处,Controller提供了处理来自View的用户输入的方法。查看用户对Controller的委托操作,Controller知道该怎么做。

  2. Observer - Controller,以及View需要知道模型何时发生变化,因此View是可观察的,另外两个是观察者。稍微修改可以定义一个观察者 - 控制器并使其根据变化更新视图。

  3. 复合 - 它是一种表示GUI的方式。

  4. 了解这三种模式,然后您将完全了解如何实施更复杂的系统。

    此外,您可以谷歌短语: 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");
   }