无法理解MVC的控制器部分(Can’t understand controller part of

2019-10-29 05:46发布

究竟那些是什么控制器? 我们被要求Java构建学校项目的ATM,而我们设计的部分是:

  1. 我们有最存储信息的账户
  2. 我们有用户,可以使操作为自己的账户,并存储一些小的信息。 (另外,我们有ATM类来存储用户,并提出一些顶级的变化)
  3. 我们有用户接口抓投入和使用的控制器。

我说得对,我们的账户是模型,接口视图和用户控制器?

非常感谢解决我的问题,!

Answer 1:

你说:“帐户模式”。 其实也没什么,他们不是。

甲域模型 (也称为模型层 ,或模型 )不是一个单一的组件,而是一个层,由多个部件。 它通过抽象现实生活中的流程和所需的资源。 换句话说,它的模型业务逻辑(由数据表示,并且,尤其是,行为)。

模型层可以是应用程序的一部分,或者可以由多个应用程序共享。

每个模型组件具有一定的作用。 它可以是一个实体 (例如域对象 ),一个值对象 ,一个服务 ,一个数据映射的抽象,一个存储库抽象,外部服务的抽象(如电子邮件或支付服务)等。通过抽象,我的意思是接口或抽象类。 具体的实现不应该是域模型的一部分,而是一个不同的外部空间的面对面的人的模型,作为基础设施的构建。

所以,你的UserAccountAtm类只是组件模型。 更确切地说,他们是实体

在另一方面,所述控制器和所述视图UI层的成分。

控制器 (应) 需要推迟(例如调度)的责任的用户请求到模型层的执行 。 更精确地,所述服务层 -其被定义为域模型的边界层,并通过它的服务组件来表示。 因此,有一定的服务实例注入控制器的依赖。 控制器通过它的电流的用户输入(数据),并调用它的一个特定的方法,其中,定义所需的用户请求的处理步骤。 服务实例,与其它模型层对象一起,执行所有这些步骤来更新与所述用户输入的模型 。 具有记调度任务,控制器方法因此应超薄,含1-3个行代码。

视图 (应)获得来自域模型(更新的)数据- 通过查询它(例如,通过牵引从它的数据)本身 -并显示它。 模拟到控制器,视图通过某些服务成分(S)的模型进行通信。

我用的动词“应该”强调这样一个事实,即有UI层的不同实现模式。 原来的MVC设计 - 如上述的实现可以使用控制器和视图。 另一种实现将使用控制器不仅要更新模型(通过服务),而且还对其进行查询(通过服务),以接收到的数据传递给视图显示给用户。 或者实现可能甚至根本不使用服务,强制处理用户请求的步骤中的控制器和/或视图定义。 等等。 所以,这是你的,你如何选择实现UI层

需要注意的是,你还可以有一个名为像模型组件(控制器和/或意见UserAccountAtm等)。 但你必须使用命名空间所有的人都来区分-推荐的路要走。 在Java中,命名空间是由包管理。

更多的细节(主要的Web MVC相关,与PHP的例子)的一些资源:

  • 应如何模型MVC结构化
  • PHP -使用MVC构建一个Slim3 Web应用程序,并了解了该模型的作用
  • MVC,控制器-用例
  • GeeCON 2014:桑德罗·曼库索-特制设计
  • MVC,交付机制和领域模型
  • 企业应用架构模式目录


Answer 2:

在这种情况下控制器将通过接口接收用户的请求和呼叫服务执行任何操作,调用数据库层获取数据并填充到模型中,与视图集成模型来创建所需的视图和组合视图返回到用户。 用户和账户将有他们在数据库中的表现不同但相关的实体。



Answer 3:

你没有得到完全正确,但不要担心 - 它实际上并不复杂,以找出部分是什么,当你知道他们为什么摆在首位存在。

这里是:

  • 型号 :MVC是与用户界面的应用程序分离关注的架构模式。 该模型很简单, 涉及用户界面的应用程序的一部分。 它在所有中没有任何代码依赖于用户界面,该界面提供的具体操作。 在一起的视图和控制器定义用户界面,模型只是一切 ,但是当我们在一个MVC应用程序的情况下谈论它,我们通常只是指一切用户界面可能会看到或影响。 有时,这会导致我们能够在被称为模型中的应用的对象,但是这是不是真的需要,往往没有用处。

了解这一点很重要的是,在转了一圈显示数据流的MVC图中的箭头。 当你画一个图,显示的依赖 ,视图和控制器取决于模型。 该模型不依赖于视图。

现在,我们已经定义的模型称为“ 模型不是用户界面 ”,显然是用户界面由视图和控制器。

我们分开这些,并把用户之间:

  • 观点 :这是一个信息提示用户的用户界面的一部分。 它决定哪些用户会看到,听到,等它从模型中获取信息,并给用户提供信息。

  • 控制器 :这是用户界面, 用户获取信息,并实现了他要执行的操作的一部分。

典型的例子是, 视图创建按钮,控制器处理的点击 。 视图和控制器,与所述用户(和时间)的之间的分离,是MVC的整个目的。 他们不会在软件中除了通过模型连接。

MVC的基本假设就是这样我们可以从控制器代码分开的视图代码,因为他们在不同的时间运行 。 视图代码运行后的模型的变化,之前的用户可以在这些变化起作用,并且控制器代码的用户决定作用后运行。

同样重要的是要明白,这是永远不会完全准确。 MVC是一个过于简单化,实际上总有一些控制器代码,并没有通过模型去视图代码之间的连接。 但是,我们尝试。 大多数MVC框架或应用程序的设计工作是管理和合理设计中,他们在这个作弊方式的一种尝试。



文章来源: Can’t understand controller part of MVC