Java'da MVC Mimarisi İçin Başlangıç ​​Kılavuzu

Yayınlanan: 2018-04-10

Web geliştirme sahnesiyle ilgiliyseniz, “MVC” kısaltmasıyla yüzlerce kez karşılaşmışsınızdır, hatta daha fazla. MVC, bugün web programlama dünyasında en çok konuşulan tasarım kalıplarından biridir ve haklı olarak da öyle. Bu yazıda, sizi MVC Mimarisi dünyasına götüreceğiz. MVC'nin temellerinden, avantajlarından ve son olarak MVC'nin Java'daki uygulamasını daha net bir şekilde anlamanıza yardımcı olacak basit bir koddan bahsedeceğiz.

İçindekiler

MVC mimarisi tam olarak nedir?

Teknik özelliklerine girmeden önce, bazı şeyleri açıklığa kavuşturalım – MVC bir tasarım modeli DEĞİLDİR, uygulamalarınızı yapılandırmanın bir yoludur. Son yıllarda, web uygulamaları MVC mimarisini yoğun bir şekilde kullanıyor ve bu nedenle, web uygulamalarına özel bir tasarım modeliyle karıştırılması doğaldır. Bununla birlikte, size MVC'nin ilk kez 1979'da tanımlandığını söyleyelim - web uygulamaları kavramının olmadığı WWW döneminden önce. Bugün web uygulamaları için kullanılan mimari, orijinal modelin bir uyarlamasıdır.
Aslında, bu mimari başlangıçta iki ana web geliştirme çerçevesine dahil edildi – Struts ve Ruby on Rails. Bu iki ortam, daha sonra gelen web çerçevelerinin çoğunun yolunu açtı ve bu mimarinin popülaritesi artmaya devam etti.

Swiggy, Quora, IMDB ve daha fazlası gibi uygulamalar oluşturmayı öğrenin

MVC mimari modeli temel bir fikri takip eder - herhangi bir uygulamada sorumlulukları aşağıdaki temelde ayırmalıyız:

  • Model: Verileri ve iş mantığını işler.
  • Görüntüle: Verileri istendiğinde kullanıcıya sunar.
  • Denetleyici: Kullanıcı isteklerini eğlendirir ve gerekli kaynakları getirir.

Bileşenlerin her biri, eksiksiz modülerlik ile birlikte tüm uygulamanın sorunsuz çalışmasını sağlayan bir dizi sınırlandırılmış göreve sahiptir. Bu bileşenlerin her birine daha ayrıntılı olarak bakalım.

kontrolör

Kontrolör, uygulamanın hizmetçisi gibidir - bir kullanıcı talebini karşılamak için model ve görünüm arasında koordinasyon gerçekleştirir. Kullanıcı istekleri, HTTP alma veya gönderme isteği olarak alınır - örneğin, kullanıcı herhangi bir eylemi gerçekleştirmek için herhangi bir GUI öğesini tıkladığında.
Bir denetleyicinin birincil işlevi, harekete geçmek için gereken tüm gerekli kaynakları getirmek için modeli çağırmak ve modelle koordine etmektir. Genellikle, bir kullanıcı isteği alındığında, denetleyici eldeki görev için uygun modeli çağırır.

modeli

Model, uygulamamız için oldukça basit bir veridir. Veriler, saklanması, alınması ve düzenlenmesi kolay bir şekilde "modellenir" . Model, kuralları verilerimize nasıl uyguladığımızdır ve sonuçta uygulamamızın yönettiği kavramları temsil eder.
Herhangi bir yazılım uygulaması için, her şey kolayca işlenebilecek veriler olarak modellenmiştir. Bir uygulama için kullanıcı, kitap veya mesaj nedir? Gerçekte hiçbir şey yok, yalnızca belirli kurallara göre işlenmesi gereken veriler. Örneğin, tarih geçerli tarihten büyük olmamalı, e-posta doğru formatta olmalı, ad “x” karakterden uzun olmamalıdır vb.

Bir kullanıcı denetleyiciden herhangi bir talepte bulunduğunda, kullanıcının istediği her şeyin bir veri temsilini döndüren uygun modelle iletişim kurar. Bu model, kullanıcıya nasıl göstermek istediğimizden bağımsız olarak belirli bir iş için aynı olacaktır. Bu nedenle model verilerini oluşturmak için mevcut herhangi bir görünümü seçebiliriz.
Ayrıca bir model, model verilerinde herhangi bir değişiklik olduğunda ilgili denetleyiciyi güncelleme mantığını da içerir.

Görünüm

Adından da anlaşılacağı gibi görünüm, modelden alınan verilerin işlenmesinden sorumludur. Verileri sığdırabileceğiniz önceden tasarlanmış şablonlar olabilir ve hatta gereksinimlere bağlı olarak model başına birkaç farklı görünüm olabilir.

Herhangi bir web uygulaması, bu üç temel bileşen göz önünde bulundurularak yapılandırılmıştır. Tüm istekleri almaktan ve belirli eylemler için belirli denetleyiciyi çağırmaktan sorumlu bir birincil denetleyici olabilir. Bir örnek kullanarak MVC mimarisi altında bir web uygulamasının çalışmasını daha iyi anlayalım.

Bir Örnek Görelim

Bir çevrimiçi kırtasiye mağazası örneğini ele alalım. Kullanıcı ürünleri görüntüleyebilir, satın alabilir, sepete ürün ekleyebilir, mevcut siparişe ürün ekleyebilir ve hatta (yöneticiyse) ürün ekleyebilir/kaldırabilir.
Şimdi bir kullanıcı kalem listesini görmek için “Kalemler” başlığına tıkladığında ne olacağını görelim.
Uygulamamız, kalemlerle ilgili tüm sorguları işlemek için özel bir denetleyiciye sahip olacaktır. Diyelim ki adı “pens_controller.php”. Ayrıca elimizdeki kalemlerle ilgili verileri saklayacak bir modelimiz olacak – buna “pens_model.php” diyelim. Son olarak, verileri sunmak için birkaç görünümümüz olacak - bir kalem listesi, kalemleri gösteren bir tablo, listeyi düzenlemek için bir sayfa, vb.
Aşağıdaki şekil, bir kullanıcının "kalemlere" tıkladığı andan sonucun önünde görüntülendiği ana kadar tüm kontrol akışını göstermektedir:

İlk olarak, “pens_controller.php” kullanıcı talebini (1) bir GET veya POST talebi olarak işler. Ayrıca, gerektiğinde “pens_controller”ı çağıracak merkezi kontrolör olan bir “index.php”ye sahip olabiliriz.
Denetleyici daha sonra talebi ve parametreleri inceler ve gerekli modeli çağırır – bu durumda “pens_model.php”. Kontrolör, modelden mevcut kalemlerin (2) listesini göndermesini ister.
Şimdi, model gerekli bilgileri (3) veritabanında arar, gerekirse mantık uygular ve verileri kontrolöre (4) döndürür.
Kontrolör daha sonra uygun bir görünüm (5) seçer ve verileri (6 ve 7) sunar. Elde taşınır bir cihazdan bir istek gelirse, buna uygun bir görünüm kullanılır veya kullanıcı belirli bir temayı seçmişse, görünümü seçilir ve bu şekilde devam eder.
Tam Yığın Geliştirici Nasıl Olunur?

MVC Mimarisinin Avantajları

Bu günlerde uygulama geliştiricilerinin karşılaştığı yaygın bir sorun, farklı türdeki cihazların desteklenmesidir. MVC mimarisi, geliştiriciler farklı cihazlar için farklı arayüzler oluşturabildikleri ve isteğin hangi cihazdan yapıldığına bağlı olarak denetleyici uygun bir görünüm seçeceği için bu sorunu çözer. Model, kullanılan cihazdan bağımsız olarak aynı verileri gönderir, bu da tüm cihazlarda tam bir tutarlılık sağlar.
MVC ayrımı, görünümü iş mantığından güzel bir şekilde yalıtır. Ayrıca, kodu ve iş akışını yapılandırılmış tutarak büyük uygulama tasarlamadaki karmaşıklıkları da azaltır. Bu, genel kodun bakımını, test edilmesini, hata ayıklamasını ve yeniden kullanılmasını çok daha kolay hale getirir.

Java kullanarak MVC'nin Basit Bir Uygulaması

Aşağıdaki üçe sahip olacağız:

    1. StudentObject : model.

    1. StudentView: ayrıntıları konsolda yazdırmak için sınıfı görüntüleyin.

  1. StudentController: verileri StudentObject içinde saklayan ve StudentView'ı buna göre güncelleyen bir kontrolör

Adım 1: Modeli Oluşturun

 public class Öğrenci {
   özel String rollNo ;
   özel Dize adı ;
   
   public String getRollNo () {
      dönüş rulosuNo ;
   }
   
   public void setRollNo ( String rollNo ) {
      bu . rollNo = rollNo ;
   }
   
   public String getName () {
      dönüş adı ;
   }
   
   public void setName ( Dize adı ) {
      bu . isim = isim ;
   }
}

Kod kendini açıklayıcıdır. Rulo numarası ve öğrencilerin isimlerini almak/ayarlamak için işlevlerden oluşur. Buna “öğrenci.java” diyelim.
2. Adım: Görünümü Oluşturun

 public class StudentView {
   public void printStudentDetails ( String StudentName , String StudentRollNo ){
      sistem . dışarı . println ( "Öğrenci:" );
      sistem . dışarı . println ( "Ad: " + öğrenciAdı );
      sistem . dışarı . println ( "Top No:" + öğrenciRulo No );
   }
}

Bu sadece değerleri konsola yazdırmak içindir. Buna “studentView.java” diyelim.
3. Adım: Denetleyiciyi Oluşturun

 genel sınıf StudentController {
   özel Öğrenci modeli ;
   özel StudentView görünümü ;
   public StudentController ( Öğrenci modeli , StudentView görünümü ){
      bu . model = model ;
      bu . görünüm = görünüm ;
   }
   public void setStudentName ( Dize adı ){
modeli . setName ( isim );
   }
   public String getStudentName (){
      dönüş modeli . getName ();
   }
   public void setStudentRollNo ( String rollNo ){
modeli . setRollNo ( rollNo );
   }
   public String getStudentRollNo (){
      dönüş modeli . getRollNo ();
   }
   public void updateView (){
görünüm . printStudentDetails ( model . getName (), model . getRollNo ());
   }
}

Buna “StudentController.java” adını verin. Yüzeysel bir bakış, bu denetleyicinin yalnızca verileri almak/ayarlamak için modeli çağırmaktan ve ardından görünümü güncellemekten sorumlu olduğunu söyleyecektir.
Şimdi tüm bunların nasıl birbirine bağlı olduğuna bir göz atalım.
Adım 4: Ana Java dosyasını oluşturun

 genel sınıf MVCPatternDemo {
   public static void main ( String [] args ) {
      //veritabanından aldığı rulo numarasına göre öğrenci kaydını getir
      Öğrenci modeli = retriveStudentFromDatabase ();
      //Bir görünüm oluştur : öğrenci detaylarını konsola yazmak için
      StudentView görünümü = yeni StudentView ();
      StudentController denetleyicisi = new StudentController ( model , görünüm );
kontrolör . updateView ();
      // model verilerini güncelle
kontrolör . setStudentName ( "John" );
kontrolör . updateView ();
   }
   özel statik Öğrenci almaStudentFromDatabase (){
      Öğrenci öğrenci = yeni Öğrenci ();
öğrenci _ setName ( "Robert" );
öğrenci _ setRollNo ( "10" );
      dönüş öğrencisi ;
   }
}

Buna “MVCPatternDemo.java” denir. Gördüğünüz gibi, öğrenci verilerini veritabanından veya bir fonksiyondan alır (bu durumda değerleri ayarlamak için bir fonksiyon kullanıyoruz) ve onu Student modeline iter. Ardından, daha önce oluşturduğumuz görünümü başlatır.
Ayrıca, denetleyicimizi başlatır ve onu modele ve görünüme bağlar. updateView() yöntemi, konsoldaki öğrenci ayrıntılarını güncelleyen denetleyicinin bir parçasıdır.
Adım 5: Sonucu Test Edin
Her şey yolunda giderse, sonuç şöyle olmalıdır:

 Öğrenci:
isim: Robert
Rulo No: 10
Öğrenci:
isim: John
Rulo No: 10

Bunu çıktı olarak alırsanız, tebrikler! Basit bir uygulama için de olsa Java kullanarak MVC mimarisini başarıyla uyguladınız. Ne kadar basit olursa olsun, bu uygulama MVC mimarisinin güçlerini göstermek için yeterlidir.
15 Bilmeniz Gereken Spring MVC Mülakat Soruları

Kapatılıyor…
Bu kadar söylenip yapıldıktan sonra, bugünlerde herhangi bir web/masaüstü uygulamasında MVC mimarisinin gücünü daha fazla vurgulamak zor. Kodunuza tamamen yeni bir modülerlik düzeyi sağlar ve bu da onu çok daha okunabilir ve sürdürülebilir kılar. Bu nedenle, bir uygulama geliştiricisi olarak kariyerinizde yeni zirvelere çıkmak istiyorsanız, MVC mimarisini ve çalışmasını ele almak en büyük önceliğiniz olmalıdır.

Dünyanın En İyi Üniversitelerinden Yazılım Mühendisliği Kurslarına Kaydolun. Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.

Bir yorum bırakın ve bu makaleyi nasıl beğendiğinizi bize bildirin!

Tam Yığın Geliştirici Olun

UpGrad ve IIIT-Bangalore'un Yazılım Geliştirmede PG Diploması
Yazılım Mühendisliği Yüksek Lisans Programına Hemen Başvur