Home Common Problem What is the difference between MVC, MVP and MVVM?

What is the difference between MVC, MVP and MVVM?

Apr 16, 2019 am 10:27 AM
mvc mvvm

Difference: MVC stands for "Model-View-Controller", MVP stands for "Model-View-Presenter", and MVVM stands for "Model-View-ViewModel"; MVP and MVVM are both derived from MVC of. In MVC, View reads data directly from Model; in MVP, View does not directly use Model.

What is the difference between MVC, MVP and MVVM?

MVC, MVP and MVVM are three popular design patterns. Among them, MVC stands for model-view-controller, MVP stands for model-view-presenter, and MVVM stands for model-view-view model; MVP and MVVM are all derived from MVC. All of these design patterns generally help in developing loosely composed applications that are easy to test and maintain.

1. MVC (Model-View-Controller)

MVC is a relatively intuitive architectural pattern, originally rooted in server-side Web development. Later, I gradually became competent in client-side Web development and was able to meet its complexity and richness.

What is the difference between MVC, MVP and MVVM?

MVC pattern divides the application into three parts:

●Model: Model (used to encapsulate the business logic related to the application Data and data processing methods)

● View: View (rendered page)

●Controller: Controller (the connector between M and V, used to control the application Process, and business logic of the page)

MVC characteristics:

The characteristic of the MVC model is to achieve separation of concerns, that is, the data model and business and display in the application Logical decoupling. In client-side web development, the code is separated and loosely coupled between the model (M-data, operation data) and view (V-HTML element that displays data), making it easier to develop, maintain and test. client application.

User operation->View (responsible for receiving user input operations)->Controller (business logic processing)->Model (data persistence)->View (feeding the results back to View):

1. View sends instructions to Controller;

2. After Controller completes the business logic, it requires Model to change state;

3. Model sends new data to View, Users get feedback.

2. MVP (Model-View-Presenter)

MVP replaces the Controller in MVC with the Presenter (presentation ), the purpose is to completely cut off the connection between View and Model, with Presenter acting as a bridge to completely isolate the direction of communication between View-Model.

What is the difference between MVC, MVP and MVVM?

MVP features:

● Two-way communication between M, V and P.

●There is no communication between View and Model, and they are all delivered through Presenter. Presenter completely separates Model and View, and the main program logic is implemented in Presenter.

●View is very thin and does not deploy any business logic. It is called "Passive View" (Passive View), that is, it does not have any initiative, while Presenter is very thick and all logic is deployed there.

●The Presenter is not directly related to the specific View, but interacts through a defined interface, so that the Presenter can be kept unchanged when the View is changed, so that it can be reused. Not only that, you can also write a test View to simulate various user operations to test the Presenter – eliminating the need to use automated testing tools.

3. MVVM (Model-View-ViewModel)

MVVM mode renames Presenter to ViewModel, which is basically the same as MVP mode Totally consistent. If MVP is a further improvement of MVC, then MVVM is a complete change in thinking. It takes the idea of ​​"two-way binding of data model data" as its core, so there is no connection between View and Model. The interaction is through ViewModel, and the interaction between Model and ViewModel is two-way, so changes in the data of the view will At the same time, the data source is modified, and changes in the data source data will be immediately reflected on the View.

What is the difference between MVC, MVP and MVVM?

Summary:

In MVC, View will read data directly from Model instead of Through Controller; there is a many-to-one relationship between View and Controller.

In MVP, View does not directly use Model. The communication between them is carried out through Presenter (Controller in MVC). All interactions occur inside Presenter; between View and Presenter One-to-one relationship.

MVVM mode is basically the same as MVP mode. The only difference is that MVVM uses two-way binding (data-binding): changes in View are automatically reflected in ViewModel, and vice versa.

The above is the entire content of this article, I hope it will be helpful to everyone's study. For more exciting content, you can pay attention to the relevant tutorial columns of the PHP Chinese website! ! !

The above is the detailed content of What is the difference between MVC, MVP and MVVM?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP implements MVVM architecture: basic principles and applications PHP implements MVVM architecture: basic principles and applications Jun 18, 2023 am 08:54 AM

With the rapid development of web applications, more and more developers are turning their attention to various emerging web development frameworks and architectural design patterns. One of the high-profile design patterns is the MVVM (ModelViewViewModel) architectural pattern. MVVM adopts a modern design pattern that allows developers to better manage and maintain applications by separating UI and business logic. In addition, MVVM reduces unnecessary coupling and improves code reusability and flexibility.

PHP MVC Architecture: Building Web Applications for the Future PHP MVC Architecture: Building Web Applications for the Future Mar 03, 2024 am 09:01 AM

Introduction In today's rapidly evolving digital world, it is crucial to build robust, flexible and maintainable WEB applications. The PHPmvc architecture provides an ideal solution to achieve this goal. MVC (Model-View-Controller) is a widely used design pattern that separates various aspects of an application into independent components. The foundation of MVC architecture The core principle of MVC architecture is separation of concerns: Model: encapsulates the data and business logic of the application. View: Responsible for presenting data and handling user interaction. Controller: Coordinates the interaction between models and views, manages user requests and business logic. PHPMVC Architecture The phpMVC architecture follows the traditional MVC pattern, but also introduces language-specific features. The following is PHPMVC

An advanced guide to PHP MVC architecture: unlocking advanced features An advanced guide to PHP MVC architecture: unlocking advanced features Mar 03, 2024 am 09:23 AM

The MVC architecture (Model-View-Controller) is one of the most popular patterns in PHP development because it provides a clear structure for organizing code and simplifying the development of WEB applications. While basic MVC principles are sufficient for most web applications, it has some limitations for applications that need to handle complex data or implement advanced functionality. Separating the model layer Separating the model layer is a common technique in advanced MVC architecture. It involves breaking down a model class into smaller subclasses, each focusing on a specific functionality. For example, for an e-commerce application, you might break down the main model class into an order model, a product model, and a customer model. This separation helps improve code maintainability and reusability. Use dependency injection

Uncovering the success of the SpringMVC framework: why it is so popular Uncovering the success of the SpringMVC framework: why it is so popular Jan 24, 2024 am 08:39 AM

SpringMVC framework decrypted: Why is it so popular, specific code examples are needed Introduction: In today's software development field, the SpringMVC framework has become a very popular choice among developers. It is a Web framework based on the MVC architecture pattern, providing a flexible, lightweight, and efficient development method. This article will delve into the charm of the SpringMVC framework and demonstrate its power through specific code examples. 1. Advantages of SpringMVC framework Flexible configuration method Spr

How to implement the MVC pattern using PHP How to implement the MVC pattern using PHP Jun 07, 2023 pm 03:40 PM

The MVC (Model-View-Controller) pattern is a commonly used software design pattern that can help developers better organize and manage code. The MVC pattern divides the application into three parts: Model, View and Controller, each part has its own role and responsibilities. In this article, we will discuss how to implement the MVC pattern using PHP. Model A model represents an application's data and data processing. usually,

How to use MVC architecture to design projects in PHP How to use MVC architecture to design projects in PHP Jun 27, 2023 pm 12:18 PM

In Web development, MVC (Model-View-Controller) is a commonly used architectural pattern for processing and managing an application's data, user interface, and control logic. As a popular web development language, PHP can also use the MVC architecture to design and build web applications. This article will introduce how to use MVC architecture to design projects in PHP, and explain its advantages and precautions. What is MVCMVC is a software architecture pattern commonly used in web applications. MV

Developing MVC with PHP8 framework: Important concepts and techniques that beginners need to know Developing MVC with PHP8 framework: Important concepts and techniques that beginners need to know Sep 11, 2023 am 09:43 AM

Developing MVC with PHP8 framework: Important concepts and techniques that beginners need to know Introduction: With the rapid development of the Internet, Web development plays an important role in today's software development industry. PHP is widely used for web development, and there are many mature frameworks that help developers build applications more efficiently. Among them, the MVC (Model-View-Controller) architecture is one of the most common and widely used patterns. This article will introduce how beginners can use the PHP8 framework to develop MVC applications.

Revealing the secrets of PHP MVC architecture: Make your website fly Revealing the secrets of PHP MVC architecture: Make your website fly Mar 03, 2024 am 09:25 AM

Model-view-controller (mvc) architecture is a powerful design pattern for building maintainable and scalable WEB applications. The PHPMVC architecture decomposes application logic into three distinct components: Model: represents the data and business logic in the application. View: Responsible for presenting data to users. Controller: Acts as a bridge between the model and the view, handling user requests and coordinating other components. Advantages of MVC architecture: Code separation: MVC separates application logic from the presentation layer, improving maintainability and scalability. Reusability: View and model components can be reused across different applications, reducing code duplication. Performance Optimization: MVC architecture allows caching of view and model results, thus increasing website speed. Test Friendly: Detachment