Architecture Patterns (MVC, etc.)

Key points

  • An architecture pattern is a "template" for organizing code by splitting it into distinct responsibilities.
  • The most representative example is "MVC (Model, View, Controller)," which splits the work into data, screen display, and overall control.
  • Splitting responsibilities this way makes code easier to revisit and extend later.

Why split up the code?

While an app is still small, you can get away with cramming both the screen's appearance and the data processing into a single file. But as more features get added, it becomes harder to tell what lives where, and the risk grows that any given fix will break something unrelated.

To prevent this problem, "templates for splitting code by responsibility" were developed. That's what architecture patterns are.

Teacher Pochi's hintThis is similar to a restaurant kitchen. If the same one person takes orders (front of house), cooks the food (kitchen), and plates the dish, things get chaotic and mistakes pile up once it gets busy. Splitting up the roles and having them coordinate holds up much better as things scale.

What is MVC?

MVC (Model, View, Controller) is one of the most representative architecture patterns, splitting code into three roles.

📦 Model Manages the data Handles business rules
🎮 Controller Receives requests Bridges Model and View
🖼️ View Displays the screen Assembles the appearance

How a request flows through the system

Let's look at how a user's request gets handled within MVC.

① User's
request
② Controller
receives it
③ Model
processes the data
④ View
assembles the screen

The Controller sticks to reception duty, leaving the actual data processing to the Model and the screen display to the View. The key is that each part can focus solely on its own role.

Teacher Pochi's hintGoing back to the restaurant example: the Controller is like "the front-of-house staff who take the order and relay it to the kitchen," the Model is "the kitchen that actually cooks," and the View is "the staff who plate the dish and bring it out."

The benefits of splitting responsibilities

  • Better clarity: you know exactly where to look — "check the View for screen fixes," "check the Model for data calculations."
  • Easier maintenance: a change to one role has less risk of affecting the others.
  • Easier to divide work across a team: the person handling the screen and the person handling the data can work in parallel.

Architecture patterns beyond MVC

MVC isn't the only architecture pattern. Depending on the purpose and type of app, there are various other templates as well.

MVVMEmphasizes managing screen state. Commonly used in frontend frameworks.
Layered architectureThe idea of splitting into layers such as "presentation," "business logic," and "data storage."

What all these patterns have in common is the idea of "organizing code by splitting it into distinct responsibilities." Get a solid grasp of MVC first, and the other patterns become much easier to understand.

Practical pitfalls to watch for

Over-abstractingApplying an elaborate layered structure to a small app can make things harder to follow and slow development down instead of helping.
Overloading the Controller (a "Fat Controller")Piling business logic that belongs in the Model into the Controller instead erodes the whole point of separating responsibilities.
Match the pattern to the app's scaleKeep small apps lightweight, and revisit the pattern — toward something like layered architecture — as the app grows.

Summary

An architecture pattern is a template for organizing code by splitting it into distinct responsibilities. In the representative example, MVC, responsibilities are split three ways — Model (data), View (screen display), and Controller (control) — aiming for code that's maintainable and easy to follow.

Related topics:

🏠 Back to top