你们更喜欢哪种?我一直在研究两者之间的区别,人们对它们的称呼似乎存在一些不一致。
我将尝试记录它们之间的差异,如果有错误,请纠正我。
MVC
1. Model 持有其自身观察者(Views)的引用,在更新模型时通知观察者。 2. Views 将所有事件和消息传递给 Controller。当模型通知视图发生更改时,视图会更新其内容。View 持有对 Controller 和 Model 的引用。 3. Controller 持有 Model 和(有时也持有)Views。Views 会调用与用户输入相应的 Controllers 方法,然后 Controller 根据需要操作 Model,并有时操作 View(阻止某些 View 点击上的按钮等)。
MVP
1. Model 没有引用 View。只为程序提供数据抽象。Model 不持有任何引用。 2. 与 MVC 中一样,View 根据用户输入调用相应的 Presenter 方法。View 仅引用 Presenter。 3. Presenter 持有 Views 和 Model 的引用。当 View 调用 Presenter 中的方法时,Presenter 操作 Model,然后操作 View。
我很确定我理解了 MVC 是如何工作的,但我对 MVP 的理解有点模糊。我非常喜欢 MVC,但唯一让我不太满意的部分是 Model,它应该只是数据层的抽象,但也持有对 Views 的引用并进行更新。这没有意义。
我将尝试记录它们之间的差异,如果有错误,请纠正我。
MVC
1. Model 持有其自身观察者(Views)的引用,在更新模型时通知观察者。 2. Views 将所有事件和消息传递给 Controller。当模型通知视图发生更改时,视图会更新其内容。View 持有对 Controller 和 Model 的引用。 3. Controller 持有 Model 和(有时也持有)Views。Views 会调用与用户输入相应的 Controllers 方法,然后 Controller 根据需要操作 Model,并有时操作 View(阻止某些 View 点击上的按钮等)。
MVP
1. Model 没有引用 View。只为程序提供数据抽象。Model 不持有任何引用。 2. 与 MVC 中一样,View 根据用户输入调用相应的 Presenter 方法。View 仅引用 Presenter。 3. Presenter 持有 Views 和 Model 的引用。当 View 调用 Presenter 中的方法时,Presenter 操作 Model,然后操作 View。
我很确定我理解了 MVC 是如何工作的,但我对 MVP 的理解有点模糊。我非常喜欢 MVC,但唯一让我不太满意的部分是 Model,它应该只是数据层的抽象,但也持有对 Views 的引用并进行更新。这没有意义。