Table of contents
No headings in the article.
There are lots of software architectural design patterns, but in this article I would be explaining about a particular one known as the MVC pattern.
MVC is an abbreviation which stands for Model View Controller. This type of architecture divides our program into 3 components known as the
Model
This component has to do with the data and business logic of our application. It is responsible for managing our applications data by interacting with the database or other data source.
View
This component is the visual representation of the model or the user interface of our application. The view has nothing to do with the users input or the data of our application but it enables users to interact with our application.
Controller
This component is responsible for the flow of the application it serves as an intermediary between the model and view components. It listens to events from the view and executes the appropriate reaction to these events. An example of the event can be a client trying to get the list of data stored in the applications database e.t.c.
Interaction between the components
The interacting of these three components can be expressed as when a client sends request to the controller, it responds to that clients input and performs interaction on the data model, such as accepting the input, validating it then passing it on to the model. The model returns some data to the controller, it processes the data and sends it to the view so it can be presented to the client, the controller also explains the data that can be shown to the users.
Advantages
Scalability: The MVC pattern makes it easier for developers to add new features or support for additional data sources without having to modify the entire application.
Reusability: The separation of components provided by the MVC enables our program to be reusable i.e we can reuse the same model for different views or same controller can be used by another model e.t.c.
The design pattern enables for easy maintenance and management of our programs.
Disadvantage
One major disadvantage is how complex the design pattern can be because it involves the separation of our program into multiple components, making it harder to understand and maintain for developers. But it can become less complex if each component has a clear responsibility and unnecessary layers are avoided.