Model-View-Controller (MVC) -arkkitehtuuri on yksi suosituimmista ohjelmistokehitysmalleista. MVC-arkkitehtuurin takana oleva logiikka hyödyntää huolenaiheiden erottamisen suunnitteluperiaatetta. Tämän periaatteen tarkoituksena on jakaa hakemus piiriosastoihin, joissa jokainen osasto käsittelee tiettyä ja erillistä asiaa.

MVC-arkkitehtuuri noudattaa huolenaiheiden erotteluperiaatetta kirjaimellisesti. Itse asiassa jokainen kirjain MVC-lyhenteessä edustaa olennaista osaa sovelluksestasi. Tässä artikkelissa tarkastellaan yksityiskohtaisesti jokaista MVC-arkkitehtuurin osiota ja näytetään, kuinka niitä käytetään ohjelmistojen kehittämiseen.

Mikä on malli?

MVC-arkkitehtuurin malli on suunnittelumallin pääkomponentti. Tämä johtuu siitä, että sovelluksesi malli tallentaa datalogiikan. Malli sanelee, kuinka tallennat ja haet tietosi.

MVC-ohjainarkkitehtuuria käyttävässä sovelluksessa data on olennainen osa sen toimintaa.

Mikä on näkymä?

View of MVC -arkkitehtuuri on sovelluksesi käyttöliittymä (UI). Käyttöliittymä on se, jonka käyttäjä näkee laitteellaan, kun hän on vuorovaikutuksessa ohjelman kanssa. Näkymän tila perustuu malliin tallennettuihin tietoihin.

instagram viewer

Mikä on ohjain?

Voit ajatella ohjainta sillana Model- ja View-komponenttien välillä.

Kun käyttäjä toimittaa tietoja käyttöliittymäsi (näkymän) kautta, näkymä välittää tiedot ohjaimelle. Ohjain käyttää näitä tietoja tietokannan päivittämiseen (mallin kautta). Ohjain myös noutaa tiedot tietokannasta (mallin kautta) ja palauttaa ne näkymään.

Ohjain on datakanavan lisäksi myös toiminnan aivot. Se päättää, mitä toimintoa millekin datalle suoritetaan ja mitkä tiedot palautetaan käyttöliittymään.

Miten se kaikki yhdistyy?

MVC-arkkitehtuuri luo puolisuljetun silmukan, joka luottaa siihen, että kaikki komponentit toimivat asianmukaisesti. Seuraava kuva osoittaa, kuinka MVC-arkkitehtuuri toimii.

Kuten yllä olevasta kuvasta näkyy, MVC-sovellus vastaanottaa ensimmäisen datasyötteen käyttäjältä käyttöliittymän kautta. Sitten sovellus siirtää tiedot MVC-arkkitehtuurin eri komponenttien läpi ja joissakin tapauksissa käsittelee näitä tietoja Controller-komponentissa.

MVC-arkkitehtuurin soveltaminen

Oletetaan, että olet kehittämässä sovellusta huoltoasemalle, joka haluaa luoda tietueen kaikesta asemalla myydystä kaasusta ja auttaa kaasunhoitajia hinnanlaskennassa. MVC-arkkitehtuuria käyttämällä aloitat mallista, siirryt sitten ohjaimeen, ja kun olet selvittänyt sovelluksesi kaiken logiikan, voit ottaa näkymän käyttöön.

Kun luot mallia sovelluksellesi, sinun on tiedettävä, minkä tyyppisiä tietoja haluat tallentaa, miten haluat tallentaa tiedot ja kuinka helposti saatavia haluat niiden olevan.

Sovellusmallin luominen

//Java-kirjasto
tuonti java.io. sarjoitettava;
julkinenluokkaa GasPriceModel toteuttaa Sarjaistettava{
//attributes
yksityinenstaattinenlopullinenpitkäserialVersionUID = 1 I;
yksityinen String driverName;
yksityinenkellua kaasun määrä;
yksityinen merkkijono kaasutyyppi;
yksityinenkellua kustannus;
// oletuskonstruktori
julkinen GasPriceModel() {
Tämä.driverName = "";
Tämä.gasAmount = 0.00f;
Tämä.gasType = "";
Tämä.kustannus = 0,00f;
}
//ensisijaiset rakentajat
julkinen GasPriceModel (merkkijonoohjaimen nimi, kellua gasAmount, merkkijono gasType, kellua kustannus) {
Tämä.driverName = kuljettajanNimi;
Tämä.gasAmount = gasAmount;
Tämä.gasType = gasType;
Tämä.kustannus = hinta;
}
//getterit ja asettajat, jotka hakevat ja käsittelevät tietoja
julkinen Merkkijono getDriverName() {
palata kuljettajan nimi;
}
julkinenmitätön setDriverName (merkkijono driverName) {
Tämä.driverName = kuljettajanNimi;
}
julkinenkellua getGasAmount() {
palata kaasun määrä;
}
julkinenmitätön setGasAmount(kellua gasAmount) {
Tämä.gasAmount = gasAmount;
}
julkinen Merkkijono getGasType() {
palata kaasutyyppi;
}
julkinenmitätön setGasType (merkkijono gasType) {
Tämä.gasType = gasType;
}
julkinenkellua getCost() {
palata kustannus;
}
julkinenmitätön setCost(kellua kustannus) {
Tämä.kustannus = hinta;
}
}

Yllä olevasta mallikoodista on tunnistettava useita tärkeitä asioita. Ensimmäinen on, että se toteuttaa serialisoitavan käyttöliittymän. Tämän käyttöliittymän avulla voit tallentaa jokaisen sovelluksella luodun objektin tilan GasPriceModel luokkaa muuttamalla se tavuvirraksi. Serialisoitavan käyttöliittymän käyttöönotto tarkoittaa, että sinun on myös luotava versiotunnus, jonka edellä olevan luokan ensimmäinen attribuutti tekee.

Aiheeseen liittyvä: Opi luomaan luokkia Javalla Muut neljä attribuuttia GasPriceModel luokka ovat yhtä tärkeitä, koska ne kertovat sinulle, kuka pääsee käsiksi tämän mallin luomaan dataan. Se kertoo myös, minkä tyyppisiä tietoja malli tallentaa (merkkijonot ja kellukkeet).

Sovellusohjaimen luominen

//Java-kirjastot
tuonti java.io. tiedosto;
tuonti java.io. FileNotFoundException;
tuonti java.io. FileOutputStream;
tuonti java.io. IOException;
tuonti java.io. ObjectOutputStream;
julkinenluokkaa GasPriceController {
//laskee asiakkaan kaasun hinnan ja palauttaa sen
julkinenkellua laske hinta(kellua määrä, merkkijono gasType){
kellua hinta = 0,00 f;
lopullinenkellua dieselHinta = 4,925f;
lopullinenkellua premiumPrice = 5,002f;
lopullinenkellua normaalihinta = 4,680 f;

jos (gasType == "Diesel")
hinta = määrä * dieselhinta;
jos (gasType == "Premium")
hinta = summa * premiumPrice;
jos (gasType == "tavallinen")
hinta = määrä * normaalihinta;

palata kustannus;
}

//tallentaa kunkin myynnin tiedot mallia käyttävään tiedostoon
julkinenboolean saveEntry (GasPriceModel-tiedot){
yrittää {

FileOutputStream fs = Uusi FileOutputStream(Uusi Tiedosto("data.dat"), totta);
ObjectOutputStream os = Uusi ObjectOutputStream (fs);
os.writeObject (data);
os.flush();
os.close();
palatatotta;
} saada kiinni (FileNotFoundException e) {
e.printStackTrace();
} saada kiinni (IOPoikkeus e) {
e.printStackTrace();
}
palataväärä;
}
}

Yllä oleva ohjain tekee kaksi asiaa: se suorittaa laskennan näkymästä vastaanotetuille tiedoille ja päättää, mitä tietoja palautetaan. Yllä oleva ohjain käyttää myös sovellusmallia tallentaakseen näkymän syötteestä luodut objektit käyttämällä saveEntry() menetelmä.

Sovellusnäkymän luominen

//Java-kirjastot
tuo java.awt. BorderLayout;
tuo java.awt. GridLayout;
tuo java.awt.event. ActionEvent;
tuo java.awt.event. ActionListener;

tuonti javax.swing. JButton;
tuonti javax.swing. JComboBox;
tuonti javax.swing. JFrame;
tuonti javax.swing. JLabel;
tuonti javax.swing. JOptionPane;
tuonti javax.swing. JPanel;
tuonti javax.swing. JTextField;

public class GasPriceView laajentaa JFramea toteuttaa ActionListener {

//attributes
yksityinen staattinen lopullinen pitkä serialVersionUID = 1L;
yksityinen GasPriceController-ohjain;
yksityinen JLabel-ohjaimenNimi;
yksityinen JTextField nameField;
yksityinen JLabel gasAmount;
yksityinen JTextField summaField;
yksityinen JLabel gasType;
yksityinen JComboBox tyyppiCombo;
yksityinen JButton btnClear;
yksityinen JButton btnSave;
yksityinen staattinen lopullinen merkkijono[] tyyppi =
{"Diesel", "Premium", "Tavallinen"};

//oletuskonstruktori
julkinen GasPriceView() {
tämä (uusi GasPriceController());
}

//ensisijainen rakentaja, joka aiheuttaa käyttöliittymän
julkinen GasPriceView (GasPriceController-ohjain) {

super("Kaasunmyyntisovellus");
setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE);
setSize (400 500);
setVisible (true);

this.controller = ohjain;

configureView();
}

//luo sovelluksen käyttöliittymä
yksityinen void configureView() {

setLayout (uusi BorderLayout());
JPanel pnl = uusi JPanel (uusi GridLayout (4,2,2,2));

driverName = new JLabel("Kuljettajan nimi:");
pnl.add (ohjaimen nimi);
nimiKenttä = new JTextField();
pnl.add (nimiKenttä);
gasAmount = new JLabel("Kaasun määrä (gallona):");
pnl.add (gasAmount);
summaField = uusi JTekstikenttä();
pnl.add (määräField);
gasType = new JLabel("Kaasutyyppi:");
pnl.add (kaasutyyppi);
typeCombo = uusi JComboBox(tyyppi);
pnl.add (typeCombo);
btnClear = new JButton("Tyhjennä");
pnl.add (btnClear);
btnSave = new JButton("Tallenna");
pnl.add (btnSave );

add (pnl, BorderLayout. KESKUSTA);

ActionListener();

}
//kuuntelee jommankumman napsautusta
public void ActionListener() {
btnClear.addActionListener (tämä);

btnSave.addActionListener (tämä);
}

//suorittaa toiminnon, jos tiettyä painiketta napsautetaan
@Ohittaa
public void actionPerformed (ActionEvent ev) {

if (ev.getSource().equals (btnClear)) {
nimiField.setText("");
summaField.setText("");
}

if (ev.getSource().equals (btnSave)){

Merkkijono gasType = (merkkijono) typeCombo.getSelectedItem();
float gasAmount = Float.parseFloat (amountField.getText());
float driverTotal = controller.calculateCost (gasAmount, gasType);
Merkkijono kuljettajanNimi = nimiKenttä.getText();
JOptionPane.showMessageDialog (null, driverName +" pitäisi maksaa $" + driverTotal );

GasPriceModel-asiakas = uusi GasPriceModel (kuljettajanName, gasAmount, gasType, driverTotal);

controller.saveEntry (asiakas);
}

}
}

Yllä oleva näkymä luo käyttöliittymän käyttämällä configureView() menetelmä. Sitten se kerää tietoja tapahtuman jälkeen (toimintokuuntelijan kautta). Yllä oleva näkymä lähettää sitten kerätyt tiedot ohjaimelle, joka suorittaa sitten joitain laskelmia ja palauttaa tiedot näkymään.

MVC-sovelluksen suorittaminen

tuonti java.awt. EventQueue;

julkinenluokkaa Sovellus {

julkinenstaattinenmitätön main (merkkijono args[]) {
EventQueue.kutsu myöhemmin(
Uusi Runnable() {

@Ohittaa
julkinenmitätön juosta() {
GasPriceController-ohjain = Uusi GasPriceController();
Uusi GasPriceView (ohjain);
}
});
}
}

Suorittamalla Sovellus luokka yllä luo seuraavan käyttöliittymän:

Käyttöliittymän täyttäminen asiaankuuluvilla tiedoilla luo seuraavan ponnahdusikkunan:

Jos katsot yllä olevan kuvan vasenta reunaa, näet, että sovellus loi myös uuden tiedoston nimeltä "data.dat." Joten tämä MVC-sovellus kerää tietoja käyttäjältä käyttöliittymän (View) kautta, joka lähettää tiedot Ohjain. Ohjain käsittelee tietoja suorittamalla joitain laskelmia, minkä jälkeen se tallentaa tiedot tiedostoon mallin avulla. Aiheeseen liittyvä: Java-syöttö ja -tulostus: Aloittelijan opas

Java-syöttö ja -tulostus: Aloittelijan opas

Jos tarkastelet tarkasti tässä artikkelissa luotua sovellusta, siinä on useita ilmeisiä etuja. Jotkut näistä eduista ovat:

  • Skaalautuvuus
  • Helpompi koodin testaus
  • Suppeamman koodin luominen

Mutta MVC-arkkitehtuuri ei ole ainoa hyödyllinen suunnittelumalli, joka voi parantaa kehitysprosessiasi.

Uudelleenkäytettävän koodin luominen JavaScriptissä suunnittelukuvioiden avulla

Suunnittelumallien käytön ymmärtäminen mahdollistaa uudelleenkäytettävän koodin käytön JavaScriptissä. Tässä on mitä sinun on tiedettävä.

Lue Seuraava

JaaTweetSähköposti
Liittyvät aiheet
  • Ohjelmointi
  • Ohjelmointi
  • Java
Kirjailijasta
Kadeisha Kean (44 artikkelia julkaistu)

Kadeisha Kean on Full-Stack-ohjelmistokehittäjä ja tekninen/teknologiakirjoittaja. Hänellä on selkeä kyky yksinkertaistaa joitain monimutkaisimmista teknologisista käsitteistä; tuottaa materiaalia, jonka jokainen teknologia-aloittelija voi helposti ymmärtää. Hän on intohimoinen kirjoittamiseen, mielenkiintoisten ohjelmistojen kehittämiseen ja maailmalla matkustamiseen (dokumenttien kautta).

Lisää Kadeisha Keanilta

tilaa uutiskirjeemme

Liity uutiskirjeemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e-kirjoja ja eksklusiivisia tarjouksia!

Klikkaa tästä tilataksesi