MVC:stä kysymyksiä

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?
7644
Äänestä

Muut lukivat myös

Vastaukset 7

Vanhimmat

Taitaa olla liian vaikea kysymys, vai miksikäs kukaan ei vastaa?
MVC = Model-view-controller = malli–näkymä–ohjain

Äänestä
  • mistään. Tämä paikka on täynnä pellejä.

    Äänestä


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.

Äänestä
  • "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?

    Äänestä

  • Nieir kirjoitti:

    "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.

    Äänestä

  • Joku poku kirjoitti:

    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.

    Äänestä

Kommentoi aloitusta


Nieir kirjoitti:

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?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu