Java MVC基本概念(3类系统?)

Java MVC基本概念(3类系统?),java,model-view-controller,Java,Model View Controller,我很难理解模型-视图-控制器的概念 据我所知,这个模型的目的是将整个系统分为3个部分。一部分负责数据、行为和数据,一部分负责UI,另一部分负责两者之间的交互 但我的问题是:如何从大型项目的概念到实施 我的老师有一个UML类模型,其中只有3个类,但是整个系统的行为怎么可能是一个类呢 模型类更像是所有模型都必须实现的接口吗 为什么这个问题不同:我知道当你有一个类来做你所有的东西(比如计算器)时模型是如何工作的,但是如果我需要一个以上的类来完成一个更复杂的系统呢 希望你们明白我的问题MVC是一种复合模

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

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

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

我的老师有一个UML类模型,其中只有3个类,但是整个系统的行为怎么可能是一个类呢

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

为什么这个问题不同:我知道当你有一个类来做你所有的东西(比如计算器)时模型是如何工作的,但是如果我需要一个以上的类来完成一个更复杂的系统呢


希望你们明白我的问题

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

  • 策略-在这里,控制器提供了从视图处理用户输入的方法。视图将用户所做的操作委托给控制器,控制器知道该做什么

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

  • 复合-这是一种表示GUI的方法

  • 了解这三种模式,然后您将完全理解如何实现更复杂的系统


    此外,您还可以用谷歌搜索短语:MVC作为计算机模式。

    模型表示应用程序中实现逻辑、管理数据和定义应用程序行为的部分。该模型对以下问题作出了回应:

    • 视图信息请求更新它的状态
    • 从控制器更改状态的说明
    视图再现模型的内容。它精确地指定了模型数据的显示方式。每当模型数据发生更改时,视图必须根据需要更新其表示形式

    控制器负责处理用户请求。它是客户机和系统之间的链接,确保正确委派完成任务所需的所有资源

    一旦控制器知道需要执行哪些操作,它就会将渲染过程委托给视图层

    换句话说,用户使用控制器。控制器操纵模型。模型更新用户在特定请求后看到的视图

    关于实现,您可以为控制器提供一个类,该类保存对模型管理器类的引用,并根据用户请求调用该对象引用上的方法。例如:

        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");
       }
    
    视图类应将请求传递给控制器。例如:

        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");
       }
    

    我不确定我们是否这样做,尤其是这句话:
    我的老师有一个UML类模型,其中只有3个类,但是整个系统的行为怎么可能是一个类呢?
    ,你能详细说明一下吗?事实上,我喜欢把MVC看作中介模式的一个具体实例:控制器在视图和模型之间进行中介,但是你所说的“表示部件”是什么意思呢。模型是一个类还是一个接口或多个类的模块?我的意思是“表示部分”(模型实现了应用程序的逻辑)。通常,您会有一个类实现一个接口,该接口包含应用程序的所有方法。例如,如果您想在模型类中实现CRUD操作,这些方法将在模型类稍后实现的接口中声明。