# MVC (Model–View–Controller (Model–Görünüm–Denetleyici))

Adres: https://softwaredictionary.org/tr/terimler/mvc
Kategori: Yazılım Mimarisi
Son güncelleme: 2026-09-29

Kısaca: MVC, uygulamayı veri ve mantık için Model, gösterim için View ve kullanıcı girdisini yöneten Controller olmak üzere üçe ayıran bir mimari desendir.

## MVC nedir?

Model–View–Controller'ın kısaltması olan MVC, bir uygulamayı ayrı sorumlulukları olan üç parçaya böler. Model veriyi ve iş kurallarını tutar, View bu veriyi kullanıcıya sunar, Controller ise kullanıcı girdisini alır, Model'i günceller ve hangi View'un gösterileceğini seçer. Bu ilgilerin birbirinden ayrı tutulması kodu anlamayı, test etmeyi ve değiştirmeyi kolaylaştırır.

Tipik bir web uygulamasında `GET /products/42` gibi bir istek bir controller'a ulaşır. Controller, modelden 42 numaralı ürünü veritabanından yüklemesini ister, sonucu HTML sayfasını oluşturan bir görünüm şablonuna aktarır. Sayfa tasarımı değişirse yalnızca view düzenlenir; fiyatlandırma kuralları değişirse yalnızca model.

Restoran güzel bir benzetmedir: garson siparişinizi alan controller, tariflerine göre yemeği hazırlayan mutfak model, tabakta önünüze gelen yemek ise gerçekten gördüğünüz view'dur. Birçok sunucu taraflı web framework'ü MVC'nin ya da ona çok yakın bir çeşidinin etrafında kurulur.

MVC, sıklıkla MVVM (Model–View–ViewModel) ve MVP (Model–View–Presenter) gibi ilgili desenlerle karıştırılır. Bunların hepsi veriyi sunumdan ayırma amacını paylaşır ama view ile mantığın nasıl iletişim kurduğu bakımından ayrılır. MVC ayrıca tek bir uygulamanın içindeki kodu düzenler; bu, bir sistemi ayrı servislere bölmekten farklıdır.

## Önemli noktalar

- Model: veri ve iş mantığı.
- View: kullanıcının gördüğü şey.
- Controller: girdiyi işler, model ile view'u birbirine bağlar.
- Bu ilgilerin ayrılması kodun test edilmesini ve bakımını kolaylaştırır.
- MVVM ve MVP, aynı fikrin yakın çeşitleridir.

## Örnek: Sade JavaScript ile MVC'nin üç parçası

```javascript
// Model: data and business rules
const ProductModel = {
  findById: (id) => ({ id, name: "Keyboard", price: 49 }),
};

// View: turns data into HTML
const productView = (product) => `<h1>${product.name}</h1><p>Price: ${product.price}</p>`;

// Controller: handles the request and connects the model and the view
function showProduct(request) {
  const product = ProductModel.findById(request.params.id);
  return productView(product);
}
```

## Sık sorulan sorular

**MVC ile MVVM arasındaki fark nedir?**

MVC'de controller girdiyi işler ve model ile view'u günceller. MVVM'de ise ViewModel, view'un doğrudan bağlandığı veri ve komutları sunar; bu yaklaşım veri bağlama (data binding) olan arayüz framework'lerinde yaygındır.

**MVC hâlâ kullanılıyor mu?**

Evet. Birçok sunucu taraflı web framework'ü MVC üzerine kuruludur ve veriyi, sunumu ve girdi işlemeyi ayırma yönündeki temel fikri modern ön yüz framework'lerinin çoğunu etkiler.

**MVC bir tasarım deseni mi yoksa mimari mi?**

MVC, bütün bir uygulamanın yapısını belirlediği için genellikle mimari desen olarak tanımlanır. Kendi içinde çoğunlukla Observer ve Strategy gibi daha küçük tasarım desenlerinden oluşur.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
