Laitetaampas kysymys tännekkin kun Javapuolella kukaan ei suvainnu vastata. Ja periaatteessa tämä kysymys ei ole mitenkään kielisidonnainen joten luulisi että joku tietäväinen osaisi jotenkin auttaa.
Tein pikkuisen MVC:n ihan kokeilumielessä, varsin käyttökelpoiselta vaikuttaa, jotenka aattelin muuttaa yhden sivuston kaikkine hilavitkuttimineen siihen. Mutta mitenkäs tietokanta-yhteyksien kanssa?
Tällähetkellä on tietokanta-luokka joka on hieman muokkailtu singleton. Siis parametrina saa yhteyteen tarvittavat asetukset, jos ne eroaa niin luodaan uusi olio muutoin palautetaan jo luotu.
Tuota tietokanta-luokkaa kutsun vain niissä luokissa mitkä tarttevat tietokantaa, asetukset on erillisenä luokassa. Joten onkos tämä myös käyttökelpoinen MVC:tä käytettäessä, vai oliskos jotenkin muuten parempa?
Tuon Mallin tarkoitus ei ole vielä kunnolla auennut. Mulla on foorumi-luokat jotka hoitaa tietokannasta viestien haun jne... mitä nyt foorumissa tarttee niin onko nämä silloin Malleja?
Ja mitä muiden esimerkkejä/ohjeita olen yrittänyt katsella niin niissä käytetään vain yhtä mallia, joten jos haluan foorumin lisäksi samalle sivuille vaikkapa sivuni uutiset, niin teenkö vain uutisille oman mallin/luokan jota sitten käskytän ohjaimesta käsin?
Tein pikkuisen MVC:n ihan kokeilumielessä, varsin käyttökelpoiselta vaikuttaa, jotenka aattelin muuttaa yhden sivuston kaikkine hilavitkuttimineen siihen. Mutta mitenkäs tietokanta-yhteyksien kanssa?
Tällähetkellä on tietokanta-luokka joka on hieman muokkailtu singleton. Siis parametrina saa yhteyteen tarvittavat asetukset, jos ne eroaa niin luodaan uusi olio muutoin palautetaan jo luotu.
Tuota tietokanta-luokkaa kutsun vain niissä luokissa mitkä tarttevat tietokantaa, asetukset on erillisenä luokassa. Joten onkos tämä myös käyttökelpoinen MVC:tä käytettäessä, vai oliskos jotenkin muuten parempa?
Tuon Mallin tarkoitus ei ole vielä kunnolla auennut. Mulla on foorumi-luokat jotka hoitaa tietokannasta viestien haun jne... mitä nyt foorumissa tarttee niin onko nämä silloin Malleja?
Ja mitä muiden esimerkkejä/ohjeita olen yrittänyt katsella niin niissä käytetään vain yhtä mallia, joten jos haluan foorumin lisäksi samalle sivuille vaikkapa sivuni uutiset, niin teenkö vain uutisille oman mallin/luokan jota sitten käskytän ohjaimesta käsin?
Vastaukset 7
Vanhimmat
Taitaa olla liian vaikea kysymys, vai miksikäs kukaan ei vastaa?
MVC = Model-view-controller = malli–näkymä–ohjain
mistään. Tämä paikka on täynnä pellejä.
Voi olla, että on liian vaikea kysymys. Luultavasti ohjelmointiin keskittyneillä sivuilla on enemmän osaajia. Kokeile vaikka:
http://mureakuha.com
http://www.ohjelmointiputka.net
MVC-konsepti on vain ajatusmalli niin kuten myös OOP on, tosin jos suunnittelee MVC:tä ajatellen tulee lähelle OOP:tä. MVC konseptia käytetään enemmän verkkoympäristöissä kuten Ruby On Rails:ssä tai Djangossa, ei niinkään oliopohjaisissa kielissä kuten Java tai C .
Varsinaiseen kysymykseesi vastaten niin Malli(Model) on tietorakenne joka pysyyy muuttamattomana ja ei "tee mitään". Kontrollerit taas tekevät sen oikean työn eli niitä jotka kutsut malleiksi foorumissasi.
Pelkistetysti foorumin voisi luoda MVC:tä käyttäen näin:
Model(viestin rakenne):
Luodaan luokka jossa on otsikko, pvm, teksti ja lähettäjä. Tämä voi vastata tietokannan rakennetta.
Controller(tehtävien tekijä):
Luodaan luokkia jotka käsittelevät viestin lähettämistä, vastaamista ja lukemista.
View(ulkoasu/näkymä):
Luokat(sivut) jotka vastaavat informaation esittämisestä ja syöttämisestä.
Kun käyttäjä sitten näkymässä syöttää tietoa niin näkymä kutsuu kontrolleria joka edelleen kutsuu mallia.
"Varsinaiseen kysymykseesi vastaten niin Malli(Model) on tietorakenne joka pysyyy muuttamattomana ja ei "tee mitään". Kontrollerit taas tekevät sen oikean työn eli niitä jotka kutsut malleiksi foorumissasi."
Mitä hyötyä sitten tuosta mallista on?
Saatoit käsittää tuon aikasemman viestini hieman väärin. Olin ymmärtänyt asian jotakuin näin
Foorumin ohjain
- lisää viesti
Käskyttää mallia lisäämään viestin (välittää käyttäjän syötteet mallille) ja hakemaan kaikki viestit, välittää ne viewille. Errorin sattuessa error viesti viewille error templaten valinta.
- näytä viestit
Käskyttää mallia hakemaan kaikki viestit ja välittää ne viewille. Errorin sattuessa error viesti viewille error templaten valinta.
Foorumin malli
- lisää viesti
Viestin lisäämiseen tarvittavat SQL-kyselyt jne... palauttaa true/false
- hae kaikki viestit
Viestien hakemiseen tarvittavat SQL-kyselyt jne... palauttaa tiedot taulukkona.
View
Hakee ohjaimessa pyydetyn templaten ja länttäsee siihen annetut tiedot.
Ilmeisesti pitäisi nuo mallin jutut siirtää ohjaimelle?
Käyttösi on oikein. Malli sisältää liiketoimintalogiikan ja huolehtii tiedon säilytyksestä, joten olet ymmärtänyt ihan oikein. Ohjaimen tehtävä on ohjata vain tapahtumien kulkua, aivan kuten kuvasit.
Kiitoksia kaikille vatauksista, asia alkaa pikkihiljaa selvetä, joskin lisää vastauksia saa vielä tulla.