MVP ve MVC nedir ve fark nedir?


Al─▒nan cevaba git


RAD (s├╝r├╝kle b─▒rak ve yap─▒land─▒r) y├Ânteminin ├Âtesine bakarken , bir├žok arac─▒n te┼čvik etti─či kullan─▒c─▒ arabirimleri olu┼čturma modeli, Model-View-Controller , Model-View-Presenter ve Model-View-ViewModel olarak adland─▒r─▒lan ├╝├ž tasar─▒m deseni ile kar┼č─▒la┼čman─▒z muhtemeldir . Sorumun ├╝├ž b├Âl├╝m├╝ var:

  1. Bu kal─▒plar hangi sorunlar─▒ ele al─▒yor?
  2. Nas─▒l benzerler?
  3. Nas─▒l farkl─▒lar?

2068









Cevap say─▒s─▒n─▒ say: 24






Model-View-Presenter

In MVP , Sunucu G├Âr├╝n├╝m├╝ i├žin UI i┼č mant─▒─č─▒ i├žerir. G├Âr├╝n├╝m temsilcisinden gelen t├╝m ├ža─čr─▒lar do─črudan Presenter'a g├Ânderilir. Presenter ayr─▒ca do─črudan G├Âr├╝n├╝mden ayr─▒┼čt─▒r─▒l─▒r ve bir aray├╝z arac─▒l─▒─č─▒yla onunla konu┼čur. Bu, bir ├╝nite testinde G├Âr├╝n├╝m├╝n tak─▒lmas─▒n─▒ sa─člamak i├žindir. MVP'nin ortak ├Âzelliklerinden biri, ├žok fazla iki y├Ânl├╝ g├Ânderimin olmas─▒ gerekti─čidir. ├ľrne─čin, birisi "Kaydet" d├╝─čmesini t─▒klad─▒─č─▒nda, olay i┼čleyicisi Presenter'─▒n "OnSave" y├Ântemine atan─▒r. Kaydetme i┼člemi tamamland─▒ktan sonra Presenter, G├Âr├╝n├╝m├╝n kaydetme i┼čleminin tamamland─▒─č─▒n─▒ g├Âsterebilmesi i├žin Aray├╝z├╝ ├╝zerinden G├Âr├╝n├╝m├╝n├╝ geri ├ža─č─▒r─▒r.

MVP, Web Formlar─▒nda ayr─▒ sunum yapmak i├žin ├žok do─čal bir model olma e─čilimindedir. Bunun nedeni, g├Âr├╝n├╝m├╝n her zaman ├Ânce ASP.NET ├žal─▒┼čma zaman─▒ taraf─▒ndan yarat─▒lm─▒┼č olmas─▒d─▒r. Her iki de─či┼čken hakk─▒nda da daha fazla bilgi bulabilirsiniz .

─░ki birincil varyasyon

Pasif G├Âr├╝n├╝m: G├Âr├╝n├╝m m├╝mk├╝n oldu─čunca aptal ve neredeyse s─▒f─▒r mant─▒k i├žeriyor. Sunucu, G├Âr├╝n├╝m ve Model ile konu┼čan ortadaki bir adamd─▒r. G├Âr├╝n├╝m ve Model birbirinden tamamen korumal─▒. Model, olaylar─▒ art─▒rabilir, ancak Presenter, G├Âr├╝n├╝m├╝ g├╝ncellemek i├žin bunlara abone olur. Pasif G├Âr├╝n├╝m'de do─črudan veri ba─člama yoktur, bunun yerine G├Âr├╝n├╝m Presenter'─▒n verileri ayarlamak i├žin kulland─▒─č─▒ ayarlay─▒c─▒ ├Âzelliklerini g├Âsterir. G├Âr├╝n├╝mdeki t├╝m durumlar Presenter'da y├Ânetilir.

  • Pro: maksimum test edilebilirlik y├╝zeyi; G├Âr├╝n├╝m ve Modelin temiz ayr─▒lmas─▒
  • Con: daha fazla i┼č (├Ârne─čin t├╝m ayarlay─▒c─▒ ├Âzellikleri) t├╝m verileri kendiniz ba─člad─▒─č─▒n─▒z i├žin.

Denetleyici Denetleme: Sunucu, kullan─▒c─▒ hareketlerini ger├žekle┼čtirir. G├Âr├╝n├╝m, veri ba─člama yoluyla do─črudan Modele ba─član─▒r. Bu durumda, Modelin G├Âr├╝n├╝mden ge├žmesini sa─člamak i├žin Sunucunun i┼čidir. Presenter ayr─▒ca, bir d├╝─čmeye basma, gezinme vb. Hareketler i├žin mant─▒k da i├žerecektir.

  • Pro: Veri ba─člama kald─▒rarak kod miktar─▒ azal─▒r.
  • Con: daha az test edilebilir y├╝zey (veri ba─člama nedeniyle) var ve do─črudan Modelle konu┼čtu─čundan G├Âr├╝n├╝m'de daha az kaps├╝lleme var.

Model-View-Controller

In MVC , Kontrol├Âr G├Âr├╝n├╝m zaman uygulama y├╝kler dahil olmak ├╝zere herhangi bir eylem yan─▒t olarak g├Âsterilecek olan belirlemekten sorumludur. Bu, eylemlerin G├Âr├╝n├╝m ├╝zerinden Sunucuyu y├Ânlendirdi─či MVP'den farkl─▒d─▒r. MVC'de, G├Âr├╝n├╝mdeki her eylem, bir eylemle birlikte bir Denetleyiciye yap─▒lan ├ža─čr─▒yla ili┼čkilendirilir. Web'de her bir eylem, di─čer taraf─▒nda yan─▒t veren bir Denetleyicinin bulundu─ču bir URL'ye yap─▒lan ├ža─čr─▒y─▒ i├žerir. Bu Kontrol├Âr i┼člemlerini tamamlad─▒ktan sonra, do─čru G├Âr├╝nt├╝ye geri d├Ânecektir. Dizi, uygulaman─▒n ├Âmr├╝ boyunca bu ┼čekilde devam eder:

    G├Âr├╝n├╝mdeki ─░┼člem
        -> Denetleyiciye ├ça─čr─▒ Yap
        -> Kontrol├Âr Mant─▒─č─▒
        -> Kontrol├Âr G├Âr├╝n├╝m├╝ d├Ând├╝r├╝r.

MVC ile ilgili di─čer bir b├╝y├╝k fark da, G├Âr├╝n├╝m├╝n do─črudan Modele ba─čl─▒ olmamas─▒d─▒r. G├Âr├╝n├╝m basit├že i┼čliyor ve tamamen vatans─▒z. MVC uygulamalar─▒nda, G├Âr├╝n├╝m genellikle arkas─▒ndaki kodda herhangi bir mant─▒─ča sahip olmayacakt─▒r. Bu kesinlikle gerekli oldu─ču MVP'ye ayk─▒r─▒d─▒r, ├ž├╝nk├╝ e─čer G├Âr├╝n├╝m Sunucuyu devredemezse, asla ├ža─čr─▒lmaz.

Sunum Modeli

Bak─▒lmas─▒ gereken di─čer bir desen de Sunum Modeli modelidir. Bu d├╝zende Presenter yoktur. Bunun yerine G├Âr├╝n├╝m do─črudan bir Sunum Modeline ba─član─▒r. Sunum Modeli, G├Âr├╝n├╝m i├žin ├Âzel olarak haz─▒rlanm─▒┼č bir Modeldir. Bu, bu Modelin kayg─▒lar─▒n ayr─▒lmas─▒n─▒n ihlali olaca─č─▒ i├žin asla bir etki alan─▒ modeline koyamayaca─č─▒ ├Âzellikleri ortaya ├ž─▒karabilece─či anlam─▒na gelir. Bu durumda, Sunum Modeli etki alan─▒ modeline ba─član─▒r ve bu Modelden gelen olaylara abone olabilir. View daha sonra Sunum Modelinden gelen olaylara abone olur ve buna g├Âre kendini g├╝nceller. Sunu Modeli, g├Âr├╝n├╝m├╝n eylemleri ├ža─č─▒rmak i├žin kulland─▒─č─▒ komutlar─▒ g├Âsterebilir. Bu yakla┼č─▒m─▒n avantaj─▒, PM'in g├Âr├╝n├╝m i├žin t├╝m davran─▒┼člar─▒ tamamen i├žine almas─▒ndan dolay─▒, esasen t├╝m├╝yle arkadaki kodu kald─▒rabilmenizdir. Bu model WPF uygulamalar─▒nda kullan─▒m i├žin ├žok g├╝├žl├╝ bir adayd─▒r ve Model-View-ViewModel olarak da adland─▒r─▒l─▒r .

Sunu Modeli ile ilgili bir MSDN makalesi ve WPF i├žin Kompozit Uygulama Rehberinde (eski Prizma) Ayr─▒lm─▒┼č Sunu Kal─▒plar─▒ ile ilgili bir b├Âl├╝m bulunmaktad─▒r.http://msdn.microsoft.com/en-us/library/cc707862.aspx


1942







Bu, bu tasar─▒m modellerinin bir ├žok de─či┼čkeninin a┼č─▒r─▒ basitle┼čtirilmesidir, ancak bu, ikisi aras─▒ndaki farklar─▒ d├╝┼č├╝nmeyi seviyorum.

MVC


MVC

MVP


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin


431







Bir s├╝re ├Ânce bu konuda blog yazd─▒m, Todd Snyder'─▒n ikisi aras─▒ndaki farktan bahseden m├╝kemmel yaz─▒dan al─▒nt─▒ yaparak :

Modeller aras─▒ndaki anahtar farklar ┼čunlard─▒r:

MVP Deseni

  • G├Âr├╝n├╝m, modele daha gev┼ček bir ┼čekilde ba─čl─▒d─▒r. Sunucuyu modeli g├Âr├╝┼če ba─člamaktan sorumludur.
  • ├ťnite testi daha kolayd─▒r, ├ž├╝nk├╝ g├Âr├╝n├╝mle etkile┼čim bir aray├╝z arac─▒l─▒─č─▒yla ger├žekle┼čir
  • Genellikle sunum yapan haritay─▒ bire bir g├Âr├╝nt├╝ler. Karma┼č─▒k g├Âr├╝n├╝mlerde ├žok say─▒da sunucu olabilir.

MVC Deseni

  • Denetleyici davran─▒┼člara dayan─▒r ve g├Âr├╝n├╝mler aras─▒nda payla┼č─▒labilir
  • Hangi g├Âr├╝n├╝m├╝n g├Âr├╝nt├╝lenece─čini belirlemekten sorumlu olabilir

Bu bulabildi─čim web'deki en iyi a├ž─▒klama.


411







─░┼čte ileti┼čim ak─▒┼č─▒n─▒ temsil eden resimler


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin




g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin


248







MVP'nin, G├Âr├╝n├╝m├╝n sorumlu oldu─ču bir senaryo olmas─▒ gerekmez (├Ârne─čin Taligent'in MVP'sine bak─▒n).
─░nsanlar─▒n, "Bu sadece bir manzara" (Pragmatik Programc─▒) ile ├želi┼čen bir kar┼č─▒tl─▒k modelinin aksine, bunu bir kal─▒p olarak (sorumlu bak─▒┼č a├ž─▒s─▒) vaaz etti─čini talihsiz buluyorum. "Bu sadece bir g├Âr├╝n├╝m", kullan─▒c─▒ya g├Âsterilen son g├Âr├╝┼č├╝n uygulaman─▒n ikincil bir endi┼česi oldu─čunu belirtir. Microsoft'un MVP modeli, G├Âr├╝n├╝mlerin yeniden kullan─▒lmas─▒n─▒ ├žok daha zorla┼čt─▒r─▒yor ve Microsoft'un tasar─▒mc─▒s─▒n─▒ k├Ât├╝ uygulamalar─▒ te┼čvik etmekten rahat├ža al─▒yor .

D├╝r├╝st olmak gerekirse, MVC'nin alt─▒nda yatan endi┼čelerin herhangi bir MVP uygulamas─▒ i├žin ge├žerli oldu─čunu ve farkl─▒l─▒klar─▒n neredeyse tamamen anlamsal oldu─čunu d├╝┼č├╝n├╝yorum. G├Âr├╝n├╝m (verileri g├Âr├╝nt├╝leyen), denetleyici (kullan─▒c─▒ etkile┼čimini ba┼člatan ve kontrol eden) ve model (temel veri ve / veya hizmetler) aras─▒ndaki endi┼čelerin ayr─▒lmas─▒n─▒ takip etti─činiz s├╝rece, MVC'nin avantajlar─▒n─▒ elde etmi┼č olursunuz. . Avantajlar─▒ elde ediyorsan─▒z, modelinizin MVC, MVP veya Denetleyici Denetleyici olup olmad─▒─č─▒n─▒ ger├žekten kim umursar? Tek ger├žek model MVC olarak kal─▒r, gerisi sadece farkl─▒ lezzetleridir.

Bu farkl─▒ uygulamalar─▒ bir dizi kapsaml─▒ bir ┼čekilde listeleyen bu olduk├ža heyecan verici makaleyi d├╝┼č├╝n├╝n . Hepsinin temelde ayn─▒ ┼čeyi yapt─▒klar─▒n─▒ ancak biraz farkl─▒ ┼čekilde olduklar─▒n─▒ not edebilirsiniz.

┼×ahsen, MVP'nin yak─▒n zamanda, bir ┼čeyin ger├žekten MVC olup olmad─▒─č─▒n─▒ ya da Microsofts H─▒zl─▒ Uygulama Geli┼čtirme ara├žlar─▒n─▒ hakl─▒ ├ž─▒karmayaca─č─▒n─▒ iddia eden semantik bigots aras─▒ndaki arg├╝manlar─▒ azaltmak i├žin ak─▒lda kal─▒c─▒ bir terim olarak tan─▒t─▒ld─▒─č─▒n─▒ d├╝┼č├╝n├╝yorum. Kitaplar─▒mdaki bu sebeplerin hi├žbiri varl─▒─č─▒n─▒ ayr─▒ bir tasar─▒m deseni olarak hakl─▒ ├ž─▒karmaz.


166







MVP: manzara sorumlu.

├ço─ču durumda g├Âr├╝n├╝m, sunucusunu olu┼čturur. Sunucu modelle etkile┼čime girecek ve g├Âr├╝n├╝m├╝ bir aray├╝z ├╝zerinden de─či┼čtirecektir. G├Âr├╝n├╝m bazen sunum yapan ile etkile┼čime girer, genellikle baz─▒ aray├╝zlerle. Bu uygulamaya ge├žiyor; g├Âr├╝n├╝m├╝n sunucudaki y├Ântemleri ├ža─č─▒rmas─▒n─▒ m─▒ yoksa g├Âr├╝n├╝m├╝n sunucunun dinleyece─či olaylar─▒ olmas─▒n─▒ m─▒ istiyorsunuz? Bu a┼ča─č─▒ kaynar: G├Âr├╝n├╝m sunucu hakk─▒nda biliyor. G├Âr├╝n├╝m, sunum yapan ki┼čiye delege edilir.

MVC: kontrol├Âr sorumlu.

Denetleyici, baz─▒ olay / isteklere g├Âre olu┼čturulur veya eri┼čilir. Denetleyici daha sonra uygun g├Âr├╝n├╝m├╝ olu┼čturur ve g├Âr├╝n├╝m├╝ daha fazla yap─▒land─▒rmak i├žin modelle etkile┼čime girer. A┼ča─č─▒ kaynar: denetleyici g├Âr├╝n├╝m├╝ olu┼čturur ve y├Ânetir; g├Âr├╝n├╝m kontrol├Âre ba─č─▒ml─▒d─▒r. G├Âr├╝n├╝m denetleyici hakk─▒nda bir ┼čey bilmiyor.


106








g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

MVC (Model G├Âr├╝n├╝m Kontrol├Âr├╝)

Giri┼č, g├Âr├╝n├╝m yerine ilk ├Ânce Denetleyiciye y├Ânlendirilir. Bu giri┼č, bir sayfa ile etkile┼čime giren bir kullan─▒c─▒dan geliyor olabilir, ancak yaln─▒zca bir taray─▒c─▒ya belirli bir URL girerek de olabilir. Her iki durumda da, baz─▒ i┼člevselliklere ba┼člamak i├žin ara y├╝zle┼čti─či bir Denetleyici. Denetleyici ile G├Âr├╝n├╝m aras─▒nda birebir ili┼čki vard─▒r. Bunun nedeni, tek bir kontrol cihaz─▒n─▒n y├╝r├╝t├╝len i┼čleme ba─čl─▒ olarak olu┼čturulacak farkl─▒ g├Âr├╝n├╝mler se├žebilmesidir. Denetleyiciden G├Âr├╝n├╝me giden tek y├Ânl├╝ oku not edin. Bunun nedeni, G├Âr├╝n├╝m├╝n denetleyici hakk─▒nda hi├žbir bilgisi veya referans─▒ olmamas─▒d─▒r. Kontrol├Âr Modeli geri atar, bu nedenle G├Âr├╝n├╝m ile kendisine verilen beklenen Model aras─▒nda bilgi vard─▒r, ancak ona hizmet eden Kontrol├Âr de─čil.

MVP (Model G├Âr├╝n├╝m├╝ Sunucusu)

Giri┼č, Sunucu ile de─čil, G├Âr├╝n├╝m ile ba┼člar. G├Âr├╝n├╝m ile ili┼čkili Presenter aras─▒nda bire bir e┼čleme var. G├Âr├╝n├╝m, Sunucuya bir referans tutar. Presenter ayr─▒ca G├Âr├╝n├╝mden tetiklenen olaylara da tepki veriyor, bu nedenle onunla ili┼čkili G├Âr├╝n├╝m├╝n fark─▒nda. Sunucu, Model ├╝zerinde ger├žekle┼čtirdi─či istenen eylemlere dayanarak G├Âr├╝n├╝m├╝ g├╝nceller, ancak G├Âr├╝n├╝m Modelin fark─▒nda de─čildir.

Daha fazla referans i├žin


76


2015-12-20





Sorunun bir├žok cevab─▒ var, ancak ikisini a├ž─▒k├ža kar┼č─▒la┼čt─▒ran ger├žekten basit bir cevaba ihtiya├ž duyuldu─čunu hissettim. ─░┼čte, bir kullan─▒c─▒ bir MVP ve MVC uygulamas─▒nda bir film ad─▒ arad─▒─č─▒nda yapt─▒─č─▒m tart─▒┼čma:

Kullan─▒c─▒: T─▒klaÔÇŽ

View : Kim o? [ MVP | MVC ]

Kullan─▒c─▒: Ara butonuna t─▒klad─▒mÔÇŽ

G├Âr├╝n├╝m : Tamam, bir saniye bekleyinÔÇŽ. [ MVP | MVC ]

( G├Âr├╝n├╝m ├ža─č─▒rarak Sunucu | Kontrol├Âr ...) [ MVP | MVC ]

G├Âr├╝n├╝m : Hey Presenter | Kontrol├Âr , bir kullan─▒c─▒ sadece arama butonuna t─▒klad─▒, ne yapmal─▒y─▒m? [ MVP | MVC ]

Sunum | Denetleyici : Hey View , bu sayfada herhangi bir arama terimi var m─▒? [ MVP | MVC ]

G├Âr├╝n├╝m : Evet,ÔÇŽ i┼čte buradaÔÇŽ ÔÇťpiyanoÔÇŁ [ MVP | MVC ]

Sunucu : Thanks View ,ÔÇŽ bu arada, Model ├╝zerinde arama terimine bak─▒yorum , l├╝tfen ona bir ilerleme ├žubu─ču g├Âster [ MVP | MVC ]

( Presenter | Controller Modeli ├ža─č─▒r─▒yor ÔÇŽ) [ MVP | MVC ]

Sunum | Denetleyici : Hey Model , Bu arama terimi i├žin herhangi bir e┼čle┼čmeniz var m─▒ ?: ÔÇťpiyanoÔÇŁ [ MVP | MVC ]

Model : Hey Sunucusu | Kontrol├Âr , kontrol edeyimÔÇŽ [ MVP | MVC ]

( Model , film veritaban─▒na bir sorgu yap─▒yorÔÇŽ) [ MVP | MVC ]

( Bir s├╝re sonra ... )

-------------- Buras─▒ MVP ve MVC'nin ayr─▒lmaya ba┼člad─▒─č─▒ yer ---------------

Model : Senin i├žin bir liste buldum Presenter , i┼čte JSON'da ÔÇť[{ÔÇŁ name ÔÇŁ:ÔÇť Piano Teacher ÔÇŁ,ÔÇť year ÔÇŁ: 2001}, {" name ":" Piano "," year ": 1993} ] ÔÇŁ[ MVP ]

Model : Mevcut baz─▒ sonu├žlar var, Kontrol├Âr . Benim ├Ârne─čimde bir alan de─či┼čkeni yaratt─▒m ve sonucu ile doldurdum. Ad─▒ "searchResultsList" [ MVC ]

( Sunucu | Kontrol├Âr sayesinde Modeli ve geri al─▒r G├Âr├╝n├╝m ) [ MVP | MVC ]

Sunucu : Bekledi─činiz i├žin te┼čekk├╝rler View , sizin i├žin e┼čle┼čen sonu├žlar─▒n bir listesini buldum ve bunlar─▒ uygun bir bi├žimde d├╝zenledim: ["Piano Teacher 2001", "Piano 1993"]. L├╝tfen bunu kullan─▒c─▒ya dikey listede g├Âsterin. Ayr─▒ca l├╝tfen ilerleme ├žubu─čunu ┼čimdi gizleyin [ MVP ]

Kontrol├Âr : Bekledi─činiz i├žin te┼čekk├╝rler View , Modelinize arama sorgunuzu sordum . E┼čle┼čen sonu├žlar─▒n bir listesini buldu─čunu ve bunlar─▒ ├Ârne─činin i├žinde "searchResultsList" adl─▒ bir de─či┼čkende saklad─▒─č─▒n─▒ s├Âyl├╝yor. Oradan alabilirsin. Ayr─▒ca l├╝tfen ilerleme ├žubu─čunu ┼čimdi gizleyin [ MVC ]

View : ├çok te┼čekk├╝r ederim Presenter [ MVP ]

G├Âr├╝nt├╝lemek : Te┼čekk├╝rler "Kontrol├Âr" [ MVC ] (Art─▒k G├Âr├╝n├╝m kendini sorguluyor: Modelden kullan─▒c─▒ya ald─▒─č─▒m sonu├žlar─▒ nas─▒l sunmal─▒y─▒m ? Filmin yap─▒m y─▒l─▒ ilk mi yoksa son mu olmal─▒?) dikey mi yoksa yatay listede mi olmal─▒s─▒n─▒z? ...)

─░lgilendi─činiz takdirde, burada bir Github deposunun e┼člik etti─či uygulama mimari kal─▒plar─▒ (MVC, MVP, MVVP, temiz mimari, ...) ile ilgili bir dizi makale yaz─▒yorum . ├ľrnek android i├žin yaz─▒lm─▒┼č olsa da, temel prensipler herhangi bir ortama uygulanabilir.


51







  • MVP = Model-G├Âr├╝n├╝m-Sunum
  • MVC = Model-G├Âr├╝n├╝m-Kontrol├Âr├╝

    1. Her iki sunum kal─▒plar─▒. Bir Model (alan nesnelerini d├╝┼č├╝n├╝n), ekran─▒n─▒z / web sayfan─▒z (G├Âr├╝n├╝m) ve kullan─▒c─▒ aray├╝z├╝n├╝z├╝n nas─▒l davranmas─▒ gerekti─čini (Sunucu / Denetleyici) aras─▒ndaki ba─č─▒ml─▒l─▒klar─▒ ay─▒r─▒rlar.
    2. Konsept a├ž─▒s─▒ndan olduk├ža benzerler, millet, Tat / Denetleyiciyi zevkinize ba─čl─▒ olarak farkl─▒ ┼čekilde ba┼člat─▒yor.
    3. Farkl─▒l─▒klar ├╝zerine harika bir makale burada . En kayda de─čer, MVC modelinin G├Âr├╝n├╝m├╝ g├╝ncelleyen Modeline sahip olmas─▒d─▒r.

35







Ayr─▒ca hat─▒rlamaya de─čer, farkl─▒ tipteki MVP'lerin de var oldu─ču. Fowler kal─▒b─▒ ikiye b├Âld├╝ - Pasif G├Âr├╝nt├╝ ve Denetleyici Denetleyici.

Pasif G├Âr├╝n├╝m├╝ kullan─▒rken, G├Âr├╝n├╝m├╝n├╝z genellikle altta yatan kullan─▒c─▒ aray├╝z├╝ widget'─▒na do─črudan veya daha az e┼členerek ├Âzellikleri olan ince taneli bir aray├╝z uygular. ├ľrne─čin, Ad ve Adres gibi ├Âzelliklere sahip bir ICustomerView'e sahip olabilirsiniz.

Uygulaman─▒z ┼č├Âyle bir ┼čeye benzeyebilir:

 public class CustomerView : ICustomerView
{
    public string Name
    { 
        get { return txtName.Text; }
        set { txtName.Text = value; }
    }
}
 

Presenter s─▒n─▒f─▒n─▒z modelle konu┼čacak ve g├Âr├╝n├╝me "haritaland─▒racak". Bu yakla┼č─▒ma "Pasif Bak─▒┼č" denir. Avantaj, g├Âr├╝n├╝m├╝n test edilmesinin kolay olmas─▒ ve UI platformlar─▒ aras─▒nda gezinmenin (Web, Windows / XAML, vb.) Daha kolay olmas─▒d─▒r. Dezavantaj─▒, veri ba─člama gibi ┼čeylerden yararlanamaman─▒zd─▒r ( WPF ve Silverlight gibi ├žer├ževelerde ger├žekten g├╝├žl├╝d├╝r ).http://en.wikipedia.org/wiki/Windows_Presentation_Foundationhttp://en.wikipedia.org/wiki/Microsoft_Silverlight

MVP'nin ikinci lezzeti Denetleyici Denetleyici'dir. Bu durumda, G├Âr├╝n├╝m├╝n├╝z├╝n M├╝┼čteri ad─▒ alt─▒nda bir m├╝lkiyeti olabilir ve bu durumda yine UI ara├ž gere├žlerine veri ba─član─▒r. G├Âr├╝n├╝m├╝ senkronize etmek ve mikro-y├Ânetmeyi d├╝┼č├╝nmek zorunda de─čilsiniz ve Denetleyici Denetleyici, gerekti─činde, ├Ârne─čin tamamlanm─▒┼č etkile┼čim mant─▒─č─▒yla, ad─▒m atabilir ve yard─▒mc─▒ olabilir.

MVP'nin (veya birisinin belki de ayr─▒ bir model olarak adland─▒rd─▒─č─▒) ├╝├ž├╝nc├╝ "lezzet" Sunum Modeli'dir (veya bazen Model-View-ViewModel'e at─▒fta bulunulabilir). MVP'ye k─▒yasla, M ve P'yi bir s─▒n─▒fta "birle┼čtirirsiniz". UI widget'lar─▒n─▒z─▒n verinin ba─čl─▒ oldu─ču m├╝┼čteri nesneniz var, ancak "IsButtonEnabled" veya "IsReadOnly" vb. Gibi ek UI'ye ├Âzg├╝ alanlar da var.

UI mimarisine buldu─čum en iyi kayna─č─▒n, Jeremy Miller'─▒n Kendi CAB Dizini ─░├žindekiler Tablosunda yazd─▒─č─▒ blog yaz─▒lar─▒ serisi . MVP'nin t├╝m lezzetlerini kaplad─▒ ve uygulamak i├žin C # kodu g├Âsterdi.

Ayr─▒ca, ziyaret etti─činiz SilverCard ba─člam─▒nda Model-View-ViewModel modeli hakk─▒nda blog yazd─▒m. Yeniden Ziyaret Edildi: ViewModel modelini uygulamak .


33







Model-View-Controller

MVC , bir yaz─▒l─▒m uygulamas─▒n─▒n mimarisi i├žin bir kal─▒pt─▒r. Uygulama mant─▒─č─▒n─▒ mod├╝lerli─či ve i┼čbirli─či ve yeniden kullan─▒m kolayl─▒─č─▒ ile ├╝├ž ayr─▒ b├Âl├╝me ay─▒r─▒r. Ayr─▒ca uygulamalar─▒ daha esnek hale getirir ve yinelemelere kar┼č─▒ ho┼č geldiniz. Bir uygulamay─▒ a┼ča─č─▒daki bile┼čenlere ay─▒r─▒r:

  • Veri y├Ânetimi ve i┼č mant─▒─č─▒ modelleri
  • Kullan─▒c─▒ aray├╝z├╝ ve uygulamas─▒n─▒n kullan─▒m─▒ i├žin kontrol├Ârler
  • G├Âr├╝nt├╝leme grafik kullan─▒c─▒ aray├╝z├╝ nesneleri ve sunum kullan─▒m─▒ i├žin

Bunu biraz daha net hale getirmek i├žin, basit bir al─▒┼čveri┼č listesi uygulamas─▒n─▒ d├╝┼č├╝nelim. Tek istedi─čimiz, bu hafta sat─▒n almam─▒z gereken her ├Â─čenin ad─▒, miktar─▒ ve fiyat─▒n─▒n bir listesi. A┼ča─č─▒da, bu i┼člevselli─čin baz─▒lar─▒n─▒ MVC kullanarak nas─▒l uygulayabilece─čimizi a├ž─▒klayaca─č─▒z.


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

Model-View-Presenter

  • Model g├Âr├╝n├╝┼č├╝d├╝r (kullan─▒c─▒ arabirimi) g├Âr├╝nt├╝lenir verilerdir.
  • G├Âr├╝n├╝┼č├╝d├╝r Sunucuya verileri g├Âr├╝nt├╝ler (modeli) ve rotalar, kullan─▒c─▒ komutlar─▒ (olaylar) bu verilere g├Âre hareket i├žin bu bir aray├╝zd├╝r. G├Âr├╝n├╝m genellikle Sunucusuna at─▒fta bulunur.
  • Sunum (MVC denetleyicisi taraf─▒ndan oynanan) ÔÇťorta erkekÔÇŁ ve, g├Âr├╝n├╝m├╝ ve modelin her iki ba┼čvuru var. L├╝tfen ÔÇťModelÔÇŁ kelimesinin yan─▒lt─▒c─▒ oldu─čunu unutmay─▒n . Bir Modeli alan ya da de─či┼čtiren i┼č mant─▒─č─▒ olmal─▒d─▒r . ├ľrne─čin: Kullan─▒c─▒y─▒ bir veritaban─▒ tablosunda saklayan bir veritaban─▒n─▒z varsa ve G├Âr├╝n├╝m├╝n├╝z bir kullan─▒c─▒ listesi g├Âr├╝nt├╝lemek isterse, Sunum Yapan Sunucunun bir listeyi sorgulayaca─č─▒ yerden veritaban─▒ i┼č mant─▒─č─▒n─▒za (DAO gibi) bir referans─▒ olacakt─▒r. Kullan─▒c─▒lar─▒n

Basit uygulamal─▒ bir ├Ârnek g├Ârmek istiyorsan─▒z, l├╝tfen bu GitHub g├Ânderisini kontrol edin.

Bir veritaban─▒ndan kullan─▒c─▒lar─▒n listesini sorgulama ve g├Âr├╝nt├╝lemenin somut bir i┼č ak─▒┼č─▒ ┼č├Âyle olabilir:
g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

MVC ve MVP kal─▒plar─▒ aras─▒ndaki fark nedir ?

MVC Deseni

  • Denetleyici davran─▒┼člara dayan─▒r ve g├Âr├╝n├╝mler aras─▒nda payla┼č─▒labilir

  • Hangi g├Âr├╝n├╝m├╝n g├Âr├╝nt├╝lenece─čini belirlemekten sorumlu olabilir (├ľn Kontrol Kal─▒b─▒)

MVP Deseni

  • G├Âr├╝n├╝m, modele daha gev┼ček bir ┼čekilde ba─čl─▒d─▒r. Sunucuyu modeli g├Âr├╝┼če ba─člamaktan sorumludur.

  • ├ťnite testi daha kolayd─▒r, ├ž├╝nk├╝ g├Âr├╝n├╝mle etkile┼čim bir aray├╝z arac─▒l─▒─č─▒yla ger├žekle┼čir

  • Genellikle sunum yapan haritay─▒ bire bir g├Âr├╝nt├╝ler. Karma┼č─▒k g├Âr├╝n├╝mlerde ├žok say─▒da sunucu olabilir.


28







Her biri farkl─▒ sorunlar─▒ ele al─▒yor ve a┼ča─č─▒daki gibi bir ┼čeyleri bir araya getirmek i├žin bir araya getirilebiliyor


Kombine Desen

Ayr─▒ca burada MVC, MVP ve MVVM'nin tam bir kar┼č─▒la┼čt─▒rmas─▒ var.


22







Bu ├žer├ževelerin her ikisi de endi┼čeleri ayr─▒ tutmay─▒ ama├žlamaktad─▒r - ├Ârne─čin, bir veri kayna─č─▒ (model) ile etkile┼čim, uygulama mant─▒─č─▒ (veya bu verileri faydal─▒ bilgilere d├Ân├╝┼čt├╝rmek) (Denetleyici / Sunum) ve ekran kodunu (G├Âr├╝n├╝m). Baz─▒ durumlarda model, bir veri kayna─č─▒n─▒ daha y├╝ksek bir soyutlamaya d├Ân├╝┼čt├╝rmek i├žin de kullan─▒labilir. Buna g├╝zel bir ├Ârnek MVC Storefront projesidir .

MVC ile MVP aras─▒ndaki farklarla ilgili bir tart─▒┼čma var .

Yap─▒lan ayr─▒m, bir MVC uygulamas─▒nda geleneksel olarak g├Âr├╝┼č ve denetleyicinin modelle etkile┼čime girmesidir ancak birbirleriyle de─čil.

MVP tasar─▒mlar─▒ Presenter'─▒n modele eri┼čmesini ve g├Âr├╝n├╝mle etkile┼čimde bulunmas─▒n─▒ sa─člar.

Bunu s├Âyleyen ASP.NET MVC, bu tan─▒mlarla bir MVP ├žer├ževesidir, ├ž├╝nk├╝ Denetleyici, Model'e mant─▒k i├žermeyen (sadece Denetleyici taraf─▒ndan sa─članan de─či┼čkenleri g├Âsterir) g├Âstermek i├žin eri┼čir.

ASP.NET MVC'nin MVP'den ayr─▒lmas─▒ hakk─▒nda bir fikir edinmek i├žin Scott Hanselman'─▒n bu MIX sunumunu inceleyin .


18







Her ikisi de sunum ve i┼č mant─▒─č─▒n─▒ ay─▒rmaya ├žal─▒┼čan, i┼č mant─▒─č─▒n─▒ UI y├Ân├╝nden ay─▒ran kal─▒plard─▒r.

Mimari olarak, MVP, MVC'nin ├ľn Kontrol├Âr tabanl─▒ bir yakla┼č─▒m oldu─ču Sayfa Denetleyici tabanl─▒ bir yakla┼č─▒md─▒r. Bu, MVP standart web formunda sayfa ya┼čam d├Âng├╝s├╝n├╝n sadece i┼č mant─▒─č─▒n─▒ arkadaki koddan ay─▒klayarak artt─▒r─▒ld─▒─č─▒ anlam─▒na gelir. Di─čer bir deyi┼čle, sayfa bir http hizmetini vermektir. Ba┼čka bir deyi┼čle, MVP IMHO evrimsel bir geli┼čme t├╝r├╝ olan web formudur. MVC ise oyunu tamamen de─či┼čtiriyor, ├ž├╝nk├╝ istek y├╝klenmeden ├Ânce denetleyici s─▒n─▒f─▒ taraf─▒ndan ele ge├žiriliyor, i┼č mant─▒─č─▒ orada ├žal─▒┼čt─▒r─▒l─▒yor ve ard─▒ndan denetleyicinin sonunda sadece sayfaya at─▒lan verileri i┼člemesi sonucu ("g├Âr├╝n├╝m") yani, MVC (en az─▒ndan benim i├žin) y├Ânlendirme motoruyla geli┼čtirilmi┼č MVP'nin Denetleyici lezzetini denetlemeye ├žok benziyor

Her ikisi de TDD'yi etkinle┼čtirir ve olumsuz ve olumsuz y├Ânlere sahiptir.

Bunlardan birinin nas─▒l se├žilece─čine dair karar IMHO, bir ASP NET web formu web geli┼čtirme t├╝r├╝ i├žin ne kadar zaman harcand─▒─č─▒na dayanmal─▒d─▒r. E─čer biri web formunda kendini iyi g├Ârse, MVP'yi ├Âneririm. Sayfa ya┼čam d├Âng├╝s├╝ vb. ┼×eylerde kendinizi rahat hissetmezseniz, MVC buraya gitmek i├žin bir yol olabilir.

─░┼čte bu konuyla ilgili biraz daha ayr─▒nt─▒l─▒ bilgi veren ba┼čka bir blog yaz─▒s─▒ ba─člant─▒s─▒ daha var

http://blog.vuscode.com/malovicn/archive/2007/12/18/model-view-presenter-mvp-vs-model-view-controller-mvc.aspx


13







Hem MVP'yi hem de MVC'yi kulland─▒m ve geli┼čtiriciler olarak her iki modelin teknik farkl─▒l─▒klar─▒na odaklanma e─čiliminde olsak da, IMHO'daki MVP'nin amac─▒, benimseme kolayl─▒─č─▒ ile di─čerlerinden ├žok daha fazla ili┼čkilidir.

Web formlar─▒ geli┼čtirme tarz─▒ hakk─▒nda zaten iyi bir ge├žmi┼če sahip bir ekipte ├žal─▒┼č─▒yorsam, MVP'yi MVC'den daha kolay tan─▒tmak m├╝mk├╝n. Bu senaryoda MVP'nin h─▒zl─▒ bir kazan├ž oldu─čunu s├Âyleyebilirim.

Tecr├╝belerim bana bir ekibi web formlar─▒ndan MVP'ye ve ard─▒ndan MVP'den MVC'ye ta┼č─▒man─▒n nispeten kolay oldu─čunu s├Âyl├╝yor; web formlar─▒ndan MVC'ye ge├žmek daha zordur.

Burada bir arkada┼č─▒m─▒n MVP ve MVC hakk─▒nda yay─▒nlad─▒─č─▒ bir dizi makaleye ba─člant─▒ b─▒rak─▒yorum.

http://www.qsoft.be/post/Building-the-MVP-StoreFront-Gutthrie-style.aspx


9







MVP'de g├Âr├╝n├╝m, modelden veri ├žeken ve haz─▒rlayan / normalize eden sunum yapan ki┼čiden veri al─▒rken, MVC'de kontrol├Âr modelden veri ├žeker ve g├Âr├╝n├╝m├╝ ayarlayarak verileri ayarlar.

MVP'de, birden ├žok sunum t├╝r├╝yle ├žal─▒┼čan tek bir g├Âr├╝n├╝me ve farkl─▒ ├žoklu g├Âr├╝n├╝mlerle ├žal─▒┼čan tek bir sunuma sahip olabilirsiniz.

MVP genellikle Microsoft WPF ciltleme ├žer├ževesi veya HTML5 ve Java i├žin ├že┼čitli ciltleme ├žer├ževeleri gibi bir t├╝r ciltleme ├žer├ževesi kullan─▒r.

Bu ├žer├ževelerde, UI / HTML5 / XAML, her UI ├Â─česinin sunumcunun hangi ├Âzelli─činin g├Âr├╝nt├╝lendi─činin fark─▒ndad─▒r; bu nedenle, bir sunumcuyu bir g├Âr├╝n├╝m├╝ne ba─člad─▒─č─▒n─▒zda, g├Âr├╝n├╝m ├Âzellikleri arar ve onlardan nas─▒l veri ├žekilece─čini bilir. kullan─▒c─▒ taraf─▒ndan UI'da bir de─čer de─či┼čti─činde bunlar─▒ ayarlamak i├žin.

Bu nedenle, ├Ârne─čin, model bir araba ise, sunucu bir t├╝r araba sunucusu ise, ara├ž ├Âzelliklerini (y─▒l, yap─▒mc─▒, koltuk vb.) G├Âr├╝n├╝me a├ž─▒k olarak g├Âsterir. G├Âr├╝n├╝m, 'araba ├╝reticisi' adl─▒ metin alan─▒n─▒n sunum yapan Maker ├Âzelli─čini g├Âstermesi gerekti─čini biliyor.

Daha sonra bir├žok farkl─▒ sunum t├╝r├╝n├╝ g├Âr├╝n├╝me ba─člayabilirsiniz, hepsinin Maker ├Âzelli─čine sahip olmas─▒ gerekir - bir u├žaktan, trenden veya ne olursa olsun, g├Âr├╝n├╝m├╝n umrunda de─čil. G├Âr├╝n├╝m, sunucudan veri ├žeker - hangisi olursa olsun - kararla┼čt─▒r─▒lm─▒┼č bir aray├╝z uygulad─▒─č─▒ s├╝rece.

Bu ba─člama ├žer├ževesi, e─čer soyarsan─▒z, asl─▒nda denetleyici :-)

Ve b├Âylece MVP'yi MVC'nin bir evrimi olarak g├Ârebilirsiniz.

MVC harika, ancak sorun genellikle g├Âr├╝┼č ba┼č─▒na denetleyicisinin olmas─▒d─▒r. A denetleyicisi, A g├Âr├╝n├╝m├╝n├╝n alanlar─▒n─▒ nas─▒l ayarlayaca─č─▒n─▒ bilir. ┼×imdi, A g├Âr├╝n├╝m├╝n├╝n B modelinin verilerini g├Âr├╝nt├╝lemesini istiyorsan─▒z, B modelini tan─▒mak i├žin A denetleyicisine ihtiyac─▒n─▒z var ya da gibi bir aray├╝ze sahip bir nesne almak i├žin A denetleyicisine ihtiyac─▒n─▒z var. MVP yaln─▒zca ciltlemeler olmadan veya B denetleyicisindeki UI ayar kodunu yeniden yazman─▒z gerekir

Sonu├ž - MVP ve MVC'nin her ikisi de UI modellerinin bir par├žas─▒d─▒r, ancak MVP genellikle alt─▒nda MVC olan bir ba─člama ├žer├ževesi kullan─▒r. THUS MVP, MVC'den daha y├╝ksek bir mimari seviyede ve MVC'nin ├╝st├╝ndeki bir sarma modelinde.


8







M├╝tevazi k─▒sa g├Âr├╝┼č├╝m: MVP b├╝y├╝k ├Âl├žekler i├žin ve MVC k├╝├ž├╝k ├Âl├žekler i├žin. MVC'de bazen V ve C'nin do─črudan M'ye ba─čl─▒ olan tek bir b├Âl├╝nmez bile┼čenin iki taraf─▒ g├Âr├╝lebildi─čini hissediyorum ve UI kontrolleri ve temel widget'lar gibi daha k─▒sa ├Âl├žeklere inerken ka├ž─▒n─▒lmaz olarak buna d├╝┼č├╝yor. Bu ayr─▒nt─▒ d├╝zeyinde MVP ├žok az anlam ifade eder. Aksine biri daha b├╝y├╝k ├Âl├žeklere gitti─činde, do─čru bir aray├╝z daha ├Ânemli hale gelir, ayn─▒ ┼čekilde sorumluluklar─▒n net bir ┼čekilde verilmesiyle ayn─▒d─▒r ve i┼čte MVP gelir.

├ľte yandan, ba┼čparma─č─▒n bu skala kural─▒, platform ├Âzellikleri, MVC'nin MVP'den daha kolay MVC'yi uygulaman─▒n daha kolay g├Âr├╝nd├╝─č├╝ a─č gibi, bile┼čenler aras─▒ndaki bir t├╝r ili┼čkileri tercih etti─činde ├žok az kilo alabilir.


6







MVC'nin bir├žok s├╝r├╝m├╝ var, bu cevap Smalltalk'taki orijinal MVC ile ilgili. K─▒saca, ├Âyle
mvc g├Âr├╝nt├╝ vs mvp

Bu konu┼čma NYC 2017 droidcon - Temiz uygulama tasar─▒m─▒ Mimarl─▒k Bile┼čenli de ar─▒nd─▒r─▒r


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin


3







Orada bu o k─▒saca sonunda MVC & MVP a├ž─▒kl─▒yor Amca Bob g├╝zel bir video.

IMO, MVP, g├Âsterece─činiz ┼čeye (veri) g├Âsterece─činiz ┼čeye (g├Âr├╝n├╝m) ili┼čkin kayg─▒y─▒ temelden ay─▒rd─▒─č─▒n─▒z MVC'nin geli┼čtirilmi┼č bir s├╝r├╝m├╝d├╝r. Sunucu, kullan─▒c─▒ arabiriminizin i┼č mant─▒─č─▒n─▒ i├žerir, hangi verilerin sunulmas─▒ gerekti─čini a├ž─▒k bir ┼čekilde empoze eder ve size aptal g├Âr├╝n├╝m modellerinin bir listesini verir. Ve verileri g├Âsterme zaman─▒ geldi─činde, g├Âr├╝n├╝m├╝n├╝z├╝ (muhtemelen ayn─▒ kimlikleri de i├žerir) ba─čda┼čt─▒r─▒c─▒n─▒za takman─▒z ve ilgili g├Âr├╝n├╝m alanlar─▒n─▒, bu g├Âr├╝n├╝m modellerini kullanarak minimum miktarda kod tan─▒t─▒m─▒yla (yaln─▒zca ayarlay─▒c─▒lar─▒ kullanarak) ayarlayabilirsiniz. Bunun as─▒l yarar─▒, kullan─▒c─▒ arabirimi i┼č mant─▒─č─▒n─▒z─▒ ├Â─čeleri yatay bir listede veya dikey listede g├Âstermek gibi ├že┼čitli / ├že┼čitli g├Âr├╝n├╝mlere kar┼č─▒ test edebilmenizdir.

MVC'de farkl─▒ katmanlar─▒ yap─▒┼čt─▒rmak i├žin aray├╝zler (s─▒n─▒rlar) ├╝zerinden konu┼čuruz. Denetleyici mimarimize bir eklentidir, ancak ne g├Âsterece─čini dayatmak i├žin b├Âyle bir k─▒s─▒tlama yoktur. Bu anlamda, MVP, denetleyiciye adapt├Ârler ├╝zerinden tak─▒labilen g├Âr├╝┼č kavram─▒na sahip bir MVC'dir.

Umar─▒m bu daha iyi yard─▒mc─▒ olur.


3







En basit cevap, g├Âr├╝n├╝m├╝n modelle nas─▒l etkile┼čimde bulundu─čudur. MVP'de g├Âr├╝n├╝m, g├Âr├╝n├╝mle model aras─▒nda arac─▒ g├Ârevi g├Âren, g├Âr├╝n├╝mden girdi alan, modelden veri alan ve daha sonra bir i┼č mant─▒─č─▒ ger├žekle┼čtiren ve sonunda g├Âr├╝n├╝m├╝ g├╝ncelleyen sunucuya ba─član─▒r. MVC'de model, denetleyiciden geri d├Ânmek yerine, g├Âr├╝n├╝m├╝ do─črudan g├╝nceller.


2







Erwin Vandervalk'─▒n (ve ekindeki makalenin ) bu g├Âr├╝nt├╝s├╝n├╝n MVC, MVP ve MVVM, benzerlikleri ve farkl─▒l─▒klar─▒n─▒n en iyi a├ž─▒klamas─▒ oldu─čunu d├╝┼č├╝n├╝yorum. Makale makalenin ba┼čl─▒─č─▒nda "MVC" ve "MVP" i├žermedi─či i├žin "MVC, MVP ve MVVM" konulu sorgular i├žin arama motoru sonu├žlar─▒nda g├Âr├╝nm├╝yor; ama bence en iyi a├ž─▒klama bu.


MVC, MVP ve MVVM'yi a├ž─▒klayan g├Âr├╝nt├╝ - Erwin Vandervalk

( Makalede ayr─▒ca Bob Martin Amca'n─▒n g├Âr├╝┼čmelerinden birinde s├Âyledikleriyle e┼čle┼čiyor: MVC'nin asl─▒nda sistemin mimarisi i├žin de─čil, k├╝├ž├╝k UI bile┼čenleri i├žin tasarland─▒─č─▒n─▒ g├Âsteriyor)


2







  • MVC'de, G├Âr├╝n├╝m├╝n kullan─▒c─▒ arabirimi b├Âl├╝m├╝ vard─▒r; denetleyici, g├Âr├╝n├╝m ve model aras─▒ndaki arabulucudur ve model, i┼č mant─▒─č─▒n─▒ i├žerir.
  • MVP'de, G├Âr├╝n├╝m hem kullan─▒c─▒ aray├╝z├╝ hem de sunumcunun uygulanmas─▒n─▒ i├žerir, ├ž├╝nk├╝ sunucu sadece bir aray├╝zd├╝r ve model ayn─▒d─▒r, yani i┼č mant─▒─č─▒n─▒ i├žerir.

1







Eylem Alan─▒-Yan─▒tlay─▒c─▒'y─▒ ( ADR ) unuttunuz .

Yukar─▒daki baz─▒ grafiklerde a├ž─▒kland─▒─č─▒ gibi, Model ile MVC'deki G├Âr├╝n├╝m aras─▒nda do─črudan bir ili┼čki / ba─člant─▒ vard─▒r . Bir eylem ger├žekle┼čtirilir Denetleyicisi bir eylemi ├žal─▒┼čt─▒r─▒r, Model . Bu i┼člem, Model , bir tepki tetikleyecek i├žinde G├Âr├╝n├╝m . G├Âr├╝n├╝m zaman, her zaman g├╝ncellenir Modeli 'nin devlet de─či┼čtirir.

Baz─▒lar─▒, MVCÔÇÖnin 70ÔÇÖlerin sonunda yarat─▒ld─▒─č─▒n─▒ ve WebÔÇÖin yaln─▒zca 80ÔÇÖin / 90ÔÇÖ─▒n ba┼č─▒nda yarat─▒ld─▒─č─▒n─▒ unutmaya devam ediyor . MVC asl─▒nda Web i├žin de─čil, bunun yerine Masa├╝st├╝ uygulamalar─▒ i├žin denetleyicinin yarat─▒ld─▒─č─▒ yerdi. , Model ve G├Âr├╝n├╝m birlikte var olacakt─▒.

Hala ayn─▒ adland─▒rma kurallar─▒n─▒ ( model-g├Âr├╝n├╝m denetleyicisi ) kullanan web ├žer├ževeleri ( ├Ârne─čin: Laravel ) kulland─▒─č─▒m─▒z i├žin , bunun MVC olmas─▒ gerekti─čini d├╝┼č├╝nme e─čilimindeyiz, ama asl─▒nda ba┼čka bir ┼čey.

Bunun yerine, Eylem-Etki Alan─▒-Yan─▒tlay─▒c─▒'ya bir g├Âz at─▒n . ADR'de Denetleyici , Model / Etki Alan─▒nda bir i┼člem ger├žekle┼čtirecek bir Eylem al─▒r . ┼×imdiye kadar ayn─▒. Aradaki fark, daha sonra operasyonun cevab─▒n─▒ / verisini toplar ve i┼čleme i├žin bir Yan─▒tlay─▒c─▒ya ( ├Ârne─čin :. ) iletir. Ayn─▒ bile┼čen ├╝zerinde yeni bir i┼člem istendi─činde Denetleyici tekrar aran─▒r ve d├Âng├╝ kendini tekrar eder. ADR olarak, orada hi├žbir ba─člant─▒ Modeli / Domain ve G├Âr├╝n├╝m (aras─▒nda Reponser tepkisi ). view()

Not: Wikipedia, " Ancak, her ADR eylemi, ayr─▒ s─▒n─▒flar veya kapan─▒┼člarla temsil edilir " demi┼čtir . Bu mutlaka do─čru de─čil . Birka├ž Kontrol ayn─▒ Kontrol├Ârde olabilir ve model hala ayn─▒d─▒r.

mvc adr model g├Âr├╝n├╝m├╝ denetleyicisi eylem-etki alan─▒-yan─▒t


1







MVP

MVP, Model - View-Presenter'─▒ g├Âsterir. Bu, Microsoft'un Smart Client Windows uygulamalar─▒n─▒ tan─▒tt─▒─č─▒ 2007'nin ba┼člar─▒nda ortaya ├ž─▒kt─▒.

Presenter, MVP'de olaylar─▒ ve i┼č mant─▒─č─▒n─▒ modellerden ba─člay─▒c─▒ olan denetleyici bir rol oynamaktad─▒r.

G├Âr├╝n├╝m etkinli─či ba─člama, Presenter'da bir g├Âr├╝n├╝m aray├╝z├╝nden uygulanacakt─▒r.

G├Âr├╝n├╝m, kullan─▒c─▒ girdileri i├žin ba┼člat─▒c─▒d─▒r ve ard─▒ndan olaylar─▒ Presenter'a devreder ve sunum yapan ki┼či, olay ba─člar─▒n─▒ ele al─▒r ve modellerden veri al─▒r.

Art─▒lar─▒: G├Âr├╝n├╝m hi├ž bir mant─▒k de─čil sadece kullan─▒c─▒ aray├╝z├╝ne sahip

Eksileri: Olay ba─člama uygularken Bit karma┼č─▒k ve daha fazla i┼č

MVC

MVC, Model-View-Controller'─▒n k─▒saltmas─▒d─▒r. Kontrol├Âr, model olu┼čturma ve ciltleme modelleriyle g├Âr├╝n├╝m olu┼čturma i┼čleminden sorumludur.

Denetleyici, ba┼člat─▒c─▒d─▒r ve hangi g├Âr├╝n├╝m├╝n olu┼čturulaca─č─▒na karar verir.

Art─▒lar─▒: Tek Sorumluluk ─░lkesine Vurgu Y├╝ksek test edilebilirlik d├╝zeyi

Eksileri: Ayn─▒ denetleyicide birden ├žok g├Âr├╝n├╝m olu┼čturmaya ├žal─▒┼č─▒rsan─▒z, bazen Denetleyiciler i├žin ├žok fazla i┼č y├╝k├╝.


-1



─░lgili yay─▒nlar


MVC ve MVVM aras─▒ndaki fark nedir?

Ne sebep olur ve NoClassDefFoundError ve ClassNotFoundException aras─▒ndaki farklar nelerdir?

Spring MVC'deki ApplicationContext ve WebApplicationContext aras─▒ndaki fark nedir?

ÔÇťGroovyÔÇŁ ve ÔÇťGrailsÔÇŁ nedir ve bunlar─▒ kullanarak ne t├╝r uygulamalar yap─▒l─▒r?

Leaflet ve Mapbox nedir ve farkl─▒l─▒klar─▒ nelerdir?

Android'de Hex Renkleri baz─▒ zamanlar 8 basamakl─▒d─▒r. Nas─▒l? #FFFFFF ve # FFFFFF00 aras─▒ndaki fark nedir

PowerShell Set ─░├žeri─či ve D─▒┼čar─▒ D─▒┼č─▒ Dosya - fark nedir?

PhoneGap hangi veritaban─▒n─▒ kullan─▒r ve boyut s─▒n─▒r─▒ nedir?

MVC Model nesnesi, etki alan─▒ nesnesi ve DTO aras─▒ndaki fark nedir

MVC 6 View Components vs. K─▒smi G├Âr├╝┼čler: Fark nedir? Her biri ne zaman kullan─▒lmal─▒? [kapal─▒]

Etiketle ilgili di─čer sorular [design-patterns]


Bir dizenin t├╝m olu┼čumlar─▒ nas─▒l de─či┼čtirilir?

Uzak Git ┼čubesini nas─▒l yarat─▒rs─▒n─▒z?

Bir ├Â─čenin s─▒n─▒f─▒n─▒ JavaScript ile nas─▒l de─či┼čtirebilirim?

├ľrnek durumu kullanarak bir Android Etkinlik durumu nas─▒l kaydedilir?

Bir dize Bash'de bir alt dize i├žerip i├žermedi─čini kontrol etme

YouTube API's─▒ndan bir YouTube videosu k├╝k resmini nas─▒l alabilirim?

Komut sat─▒r─▒ de─či┼čkenlerini bir Node.js program─▒na nas─▒l iletirim?

Bir diziyi JavaScript'te nas─▒l bo┼čaltabilirim?

Python'da bir dosyay─▒ nas─▒l kopyalar─▒m?

Yal─▒t─▒lm─▒┼č bir ortam olu┼čturmak i├žin Vagrant veya Docker kullanmal─▒ m─▒y─▒m? [kapal─▒]