Jump to content
php.lv forumi

MVC - modeļi


Joyride

Recommended Posts

Visi vairāk vai mazāk zin, kādi ir MVC arhitektūras slāņi (Model / View / Controller).

 

Šobrīd prātoju par Model daļu. Agrāk tika uzskatīts, ka modelis ir objekts, kas reprezentē kaut ko (rakstu, foruma tēmu, komentāru, lietotāju, produktu, iepirkumu grozu, ...) un viņš arī satur metodes saglabāšanai, dzēšanai, datu atlasei u.c.

 

Tagad lasu, ka pareizi ir sadalīt atbildību - modeli dalīt vairākos slāņos:

Entity (vienkārša datu struktūra - tas, kas agrāk tika saprasts kā modelis, tikai bez pārējās funkcionalitātes),

Service (kas veic darbības ar Entity),

Gateway / Mapper (kas atlasa pēc dotajiem kritērijiem Entity/-ies).

 

Vai kāds ar izpratni par šo visu varētu izskaidrot sīkāk? Ļoti noderētu kāds konkrēts piemērs.

 

Man neskaidras ir vairākas lietas:

* kāda tieši ir katra slāņa atbildība (kas atlasa datus, kas saglabā / dzēš, kas veic specifiskas darbības ar konkrēto Entity)?

* ar ko atšķiras Gateway no Mapper?

* kā notiek hierarhisku datu atlase (rakstam var būt piesaistīti komentāri)?

* kāpēc datu atlasi veic Gateway / Mapper, nevis Service?

Link to comment
Share on other sites

Link to comment
Share on other sites

esmu dzirdējis ka tādu metodi izmanto, bet atklāti sakot man patīk standarta mvc tips, kad modelis ir kā modelis viens vesels un jebkurā laikā bez liekām pārbaudēm varu iekļaut darbībā.

 

šādas metodes kā jau nojaut izmanto tikai lielie projekti, tādi kuriem ir vitāli svarīga drošība.

Pats nēesmu īsti izpratis to darbības principa kad modeli sadala vairākos slāņos bet ideja ir skaidra.

 

Iekļaujot modeli kontrolierī tajā notiek pārbaude ko tad īsti vēlies darīt, tobīš modelis kļūst par tādu kā 2 līmeņa kontrolieri.

 

1. Controller

2. Model

2.1. If Entity

2.1.1 Model.Entity

2.2. If Service

2.2.1 Model Service

2.3. If Gateway

2.3.1 Model Gateway

 

Tīri tu saīsini modeli 3 dažādos failos.

Itkā tam ir zināma jēga, jo tad nav pieejams viss modeļa fails, tikai tā daļa kuru tu tanī brīdi gribi parādīt, bet personīgi man liekas ka tā ir lieka darbība.

Edited by EdgarsA
Link to comment
Share on other sites

Link to comment
Share on other sites

es domāju, ka nevajag kkā mākslīgi censties pieskaņoties kkādam konkrētam mvc stilam. kodē kā tev ērtāk! ja kkad radīsies vitāla nepieciešamība modeli dalīt sīkāk, tad tajā brīdī arī zināsi, kā tev to vajag izdarīt, lai varētu izdarīt to, kas tev tad būs jāizcīna...

 

galvenais taču ir darba rezultāts un laimīgs klients :))

visi tie mvc, etc ir tikai darba instrumenti. kā tev ir ērtāk, tā arī dari

un nav tur visam viens "pareizais" universālais piegājiens :D:D:D

Link to comment
Share on other sites

es domāju, ka nevajag kkā mākslīgi censties pieskaņoties kkādam konkrētam mvc stilam. kodē kā tev ērtāk!

 

Es teiktu, ka vajag gan pieskaņoties tam, kas jau labs ir izgudrots! Citādi var turpināt vienīgi "kovbojprogrammera sirojumus pa prēriju"...

Link to comment
Share on other sites

Es teiktu, ka tas vajadzīgs tikai papildu pārskatāmībai/organizācijai (kas, protams, ir labi).

 

Datu atlasi veic Gateway, nevis Service, jo paskaties angļu - latviešu vārdnīcā. Tb serviss apkalpo, veic kaut kādas darbības, bet gateway nodrošina pieeju kaut kādiem datiem.

Link to comment
Share on other sites

Nevajadzētu novirzīties no tēmas - cilvēks uzdeva dizgan konkrētu jautājumu, bet sākas spriedelējumi: "a priekškam".

Apmēram kā - cilvēks atnāk un paprasa - ziniet, esmu dzirdējis par tādu krustiņa skrūvjgriezi, bet uzreiz kāds metas bļaut, kamēr nav tā ka ar plakano skrūvjgriezi nav iespējams ieskrūvēt to skrūvi tikmēr nav vērts skatīties uz visādām tur izvirtībām. ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...