Model-View-Controller (MVC) mimarisi, en popüler yazılım geliştirme modellerinden biridir. MVC mimarisinin arkasındaki mantık, endişelerin ayrılması tasarım ilkesini kullanır. Bu ilke, bir başvuruyu, her bölümün belirli ve ayrı bir konuyu ele aldığı ilçe bölümlerine ayırmayı amaçlar.
MVC mimarisi, endişelerin ayrılması ilkesini harfi harfine takip eder. Aslında, MVC kısaltmasındaki her harf, uygulamanızın önemli bir bölümünü temsil eder. Bu makale, MVC mimarisinin her bölümünü ayrıntılı olarak inceler ve bunları yazılım geliştirmek için nasıl kullanacağınızı gösterir.
Model Nedir?
MVC mimarisinin Modeli, tasarım modelinin temel bir bileşenidir. Bunun nedeni, uygulamanızın modelinin veri mantığını depolamasıdır. Model, verilerinizi nasıl depolayacağınızı ve alacağınızı belirler.
MVC denetleyici mimarisini kullanan bir uygulama için veriler, çalışmasının temel bir bileşenidir.
Görünüm Nedir?
MVC mimarisinin Görünümü, uygulamanızın kullanıcı arabirimidir (UI). Kullanıcı Arayüzü, bir kullanıcının programınızla etkileşim kurduğunda cihazında gördüğü şeydir. Görünümün durumu, model kullanılarak depolanan verilere dayanır.
Denetleyici Nedir?
Denetleyiciyi Model ve Görünüm bileşenleri arasında bir köprü olarak düşünebilirsiniz.
Bir kullanıcı, kullanıcı arabiriminiz (Görünüm) aracılığıyla veri sağladığında, Görünüm bu verileri Denetleyiciye iletir. Denetleyici bu verileri veritabanını güncellemek için kullanır (Model aracılığıyla). Denetleyici ayrıca veri tabanından (Model aracılığıyla) verileri çeker ve Görünüme geri döndürür.
Kontrolör bir veri kanalı olmanın yanı sıra operasyonun beynidir. Hangi veriler üzerinde hangi işlemin gerçekleştirileceğine ve hangi verilerin kullanıcı arayüzüne döndürüleceğine karar verir.
Hepsi Nasıl Bir Araya Geliyor?
MVC mimarisi, tüm bileşenlerin yeterince işlev görmesine dayanan yarı kapalı bir döngü oluşturur. Aşağıdaki çizim, MVC mimarisinin nasıl çalıştığını gösterir.
Yukarıdaki çizimden de görebileceğiniz gibi, MVC uygulaması, kullanıcı arabirimi aracılığıyla bir kullanıcıdan ilk veri girdisini alır. Ardından uygulama bu verileri MVC mimarisinin farklı bileşenlerinden geçirir ve bazı durumlarda bu verileri Denetleyici bileşeninde işler.
MVC Mimarisini Uygulamak
Diyelim ki istasyonda satılan tüm gazların kaydını oluşturmak ve gaz görevlilerine fiyat hesaplamasında yardımcı olmak isteyen bir benzin istasyonu için bir uygulama geliştiriyorsunuz. MVC mimarisini kullanarak Model ile başlarsınız, ardından Denetleyiciye geçersiniz ve uygulamanızın tüm mantığını çözdükten sonra Görünümü uygulayabilirsiniz.
Uygulamanız için bir model oluştururken, ne tür verileri depolamak istediğinizi, bu verileri nasıl depolamak istediğinizi ve bu verilerin ne kadar erişilebilir olmasını istediğinizi bilmeniz gerekir.
Uygulama Modelini Oluşturma
//Java kitaplığı
içe aktarmak java.io. Serileştirilebilir;
halka açıksınıf GazFiyatModeli uygular Serileştirilebilir{
//attributes
özelstatiksonuzunseriVersionUID = 1L;
özel Dize sürücüsüAdı;
özelbatmadan yüzmek gazAmount;
özel Dize gazıTipi;
özelbatmadan yüzmek maliyet;
// varsayılan kurucu
halka açık GasPriceModel() {
Bugün nasılsın.driverName = "";
Bugün nasılsın.gasMiktar = 0.00f;
Bugün nasılsın.gasType = "";
Bugün nasılsın.maliyet = 0,00f;
}
//birincil kurucular
halka açık GasPriceModel (Dize sürücüsüAdı, batmadan yüzmek gasAmount, Dize gasType, batmadan yüzmek maliyet) {
Bugün nasılsın.driverName = sürücüAdı;
Bugün nasılsın.gasAmount = gasAmount;
Bugün nasılsın.gasType = gasType;
Bugün nasılsın.maliyet = maliyet;
}
// verileri alan ve işleyen alıcılar ve ayarlayıcılar
halka açık Dize getDriverName() {
dönüş sürücü adı;
}
halka açıkgeçersiz setDriverName (Dize sürücüsüAdı) {
Bugün nasılsın.driverName = sürücüAdı;
}
halka açıkbatmadan yüzmek getGasAmount() {
dönüş gazAmount;
}
halka açıkgeçersiz setGaz Miktarı(batmadan yüzmek gaz miktarı) {
Bugün nasılsın.gasAmount = gasAmount;
}
halka açık String getGasType() {
dönüş gazTipi;
}
halka açıkgeçersiz setGasType (String gasType) {
Bugün nasılsın.gasType = gasType;
}
halka açıkbatmadan yüzmek getCost() {
dönüş maliyet;
}
halka açıkgeçersiz setMaliyet(batmadan yüzmek maliyet) {
Bugün nasılsın.maliyet = maliyet;
}
}
Yukarıdaki Model kodunda tanımlanması gereken birkaç önemli şey vardır. Birincisi, Serileştirilebilir arabirimi uygulamasıdır. Bu arayüz, kullanılarak oluşturulan her nesnenin durumunu kaydetmenizi sağlar. GazFiyatModeli bir bayt akışına dönüştürerek sınıf. Serileştirilebilir arabirimi uygulamak, yukarıdaki sınıftaki ilk özniteliğin yaptığı gibi bir sürüm kimliği oluşturmanız gerektiği anlamına gelir.
İlişkili: Java'da Sınıfların Nasıl Oluşturulacağını Öğrenin Diğer dört özellik, GazFiyatModeli sınıf eşit derecede önemlidir çünkü size bu modelin oluşturacağı verilere kimin erişeceğini söylerler. Ayrıca, modelin ne tür verileri depolayacağını da söyler (dizeler ve kayanlar).
Uygulama Denetleyicisini Oluşturma
//Java Kitaplıkları
içe aktarmak java.io. Dosya;
içe aktarmak java.io. FileNotFoundException;
içe aktarmak java.io. FileOutputStream;
içe aktarmak java.io. IOİstisna;
içe aktarmak java.io. ObjectOutputStream;
halka açıksınıf GasPriceController {
//bir müşterinin gazının maliyetini hesaplar ve geri verir
halka açıkbatmadan yüzmek hesaplaMaliyet(batmadan yüzmek miktar, String gasType){
batmadan yüzmek maliyet = 0.00f;
sonbatmadan yüzmek dizelFiyat = 4.925f;
sonbatmadan yüzmek premiumFiyat = 5.002f;
sonbatmadan yüzmek normalFiyat = 4.680f;Eğer (gazTipi == "Dizel")
maliyet = miktar * dizelFiyat;
Eğer (gasType == "Premium")
maliyet = miktar * primFiyat;
Eğer (gasType == "Normal")
maliyet = miktar * normalFiyat;dönüş maliyet;
}// modeli kullanarak her satıştaki verileri bir dosyaya kaydeder
halka açıkboole saveEntry (GasPriceModel verileri){
denemek {
FileOutputStream fs = yeni FileOutputStream(yeni Dosya("veri.dat"), doğru);
ObjectOutputStream işletim sistemi = yeni ObjectOutputStream (fs);
os.writeObject (veri);
os.flush();
os.kapat();
dönüşdoğru;
} tutmak (FileNotFoundException e) {
e.printStackTrace();
} tutmak (IOİstisna e) {
e.printStackTrace();
}
dönüşYANLIŞ;
}
}
Yukarıdaki Kontrolör iki şey yapar, görünümden alınan veriler üzerinde bir hesaplama yapar ve hangi verilerin döndürüleceğine karar verir. Yukarıdaki Denetleyici, görünüm girişinden oluşturulan nesneleri depolamak için uygulama modelini de kullanır. saveEntry() yöntem.
Uygulama Görünümü Oluşturma
//Java kitaplıkları
java.awt'yi içe aktarın. Sınır düzeni;
java.awt'yi içe aktarın. Izgara Düzeni;
java.awt.event'i içe aktarın. EylemEtkinliği;
java.awt.event'i içe aktarın. Eylem Dinleyici;javax.swing'i içe aktarın. JDüğmesi;
javax.swing'i içe aktarın. JComboBox;
javax.swing'i içe aktarın. JÇerçeve;
javax.swing'i içe aktarın. J Etiketi;
javax.swing'i içe aktarın. JOptionPane;
javax.swing'i içe aktarın. JPanel;
javax.swing'i içe aktarın. JTextField;public class GasPriceView, JFrame'in ActionListener uygulamasını genişletir {
//attributes
özel statik son uzun serialVersionUID = 1L;
özel GasPriceController denetleyicisi;
özel JLabel sürücüsüAdı;
özel JTextField nameField;
özel JLabel gasAmount;
özel JTextField miktarField;
özel JLabel gasType;
özel JComboBoxtipKombo;
özel JButton btnClear;
özel JButton btnSave;
özel statik son Dize[] türü =
{"Dizel", "Premium", "Normal"};//varsayılan kurucu
genel GasPriceView() {
this (yeni GasPriceController());
}// kullanıcı arayüzüne neden olan birincil kurucu
genel GasPriceView (GasPriceController denetleyicisi) {super("Gaz Satış Başvurusu");
setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE);
setSize (400.500);
setVisible (doğru);this.controller = kontrolör;
configureView();
}//uygulama için kullanıcı arayüzünü oluştur
özel geçersiz yapılandırmaView() {setLayout (yeni BorderLayout());
JPanel pnl = yeni JPanel (yeni GridLayout (4,2,2,2));driverName = new JLabel("Sürücü Adı:");
pnl.add (sürücüAdı);
nameField = yeni JTextField();
pnl.add (isimField);
gasAmount = new JLabel("Gaz Miktarı (Galon):");
pnl.add (gazAmount);
miktarField = yeni JTextField();
pnl.add (miktarField);
gasType = new JLabel("Gaz Tipi:");
pnl.add (gazTipi);
typeCombo = yeni JComboBox(tip);
pnl.add (typeCombo);
btnClear = new JButton("Temizle");
pnl.add (btnClear);
btnSave = new JButton("Kaydet");
pnl.add (btnSave );ekleyin (pnl, BorderLayout. MERKEZ);
ActionListener();
}
// iki düğmeden birinin tıklanmasını dinler
public void ActionListener() {
btnClear.addActionListener (bu);btnSave.addActionListener (bu);
}//belirli bir düğme tıklandığında bir eylem gerçekleştirir
@Geçersiz kıl
public void actionPerformed (ActionEvent ev) {if (ev.getSource().equals (btnClear)) {
nameField.setText("");
miktarField.setText("");
}if (ev.getSource().equals (btnSave)){
String gasType = (String) typeCombo.getSelectedItem();
float gasAmount = Float.parseFloat (amountField.getText());
kayan sürücüToplam = controller.calculateCost (gasAmount, gasType);
String driverName = nameField.getText();
JOptionPane.showMessageDialog (null, driverName +" $" + driverTotal ödemelidir);GasPriceModel müşterisi = yeni GasPriceModel (driverName, gasAmount, gasType, driverTotal);
controller.saveEntry (müşteri);
}
}
}
Yukarıdaki Görünüm, aşağıdakileri kullanarak bir kullanıcı arayüzü oluşturur. yapılandırView() yöntem. Ardından, bir olay meydana geldikten sonra (bir eylem dinleyicisi aracılığıyla) verileri toplar. Yukarıdaki Görünüm daha sonra toplanan verileri Kontrolöre gönderir, o da daha sonra bazı hesaplamalar yapar ve verileri Görünüme döndürür.
MVC Uygulamasını Yürütme
içe aktarmak java.awt. EventQueue;
halka açıksınıf Uygulama {
halka açıkstatikgeçersiz main (String args[]) {
EventQueue.daha sonra çağırmak(
yeni Çalıştırılabilir() {
@Geçersiz kıl
halka açıkgeçersiz Çalıştırmak() {
GasPriceController kontrolörü = yeni GasPriceController();
yeni GasPriceView (kontrolör);
}
});
}
}
Yürütme Uygulama yukarıdaki sınıf aşağıdaki kullanıcı arayüzünü oluşturacaktır:
Kullanıcı arabirimini ilgili verilerle doldurmak, aşağıdaki açılır kullanıcı arabirimini oluşturur:
Yukarıdaki resmin soluna bakarsanız, uygulamanın da adında yeni bir dosya oluşturduğunu göreceksiniz. "veri.veri." Böylece, bu MVC uygulaması, bir kullanıcıdan veri toplar ve bu verileri kullanıcıya gönderir. Denetleyici. Kontrolör, bazı hesaplamalar yaparak verileri işler, ardından bu verileri Model'i kullanarak bir dosyada saklar. İlişkili: Java Giriş ve Çıkışı: Başlangıç Kılavuzu
Java Giriş ve Çıkışı: Başlangıç Kılavuzu
Bu makalede oluşturulan uygulamaya yakından bakarsanız, birkaç belirgin faydası vardır. Bu avantajlardan bazıları şunlardır:
- ölçeklenebilirlik
- Daha kolay kod testi
- Daha özlü kodun oluşturulması
Ancak MVC mimarisi, geliştirme sürecinizi geliştirebilecek tek kullanışlı tasarım modeli değildir.
Tasarım kalıplarının nasıl kullanılacağını anlamak, JavaScript'te yeniden kullanılabilir kodu kullanmanızı sağlayacaktır. İşte bilmeniz gerekenler.
Sonrakini Oku
- Programlama
- Programlama
- Java
Kadeisha Kean, Full-Stack Yazılım Geliştirici ve Teknik/Teknoloji Yazarıdır. En karmaşık teknolojik kavramların bazılarını basitleştirme konusunda belirgin bir yeteneğe sahiptir; herhangi bir teknoloji acemi tarafından kolayca anlaşılabilecek malzeme üretmek. Yazmak, ilginç yazılımlar geliştirmek ve dünyayı gezmek (belgeseller aracılığıyla) konusunda tutkulu.
Haber bültenimize abone ol
Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!
Abone olmak için buraya tıklayın