Model View Controller, Model View Presenter, Model View ViewModel vb. Hakkında okudum ve genel olarak, temel kavramın anlaşılması oldukça basit görünüyor: güzel görseller ve sciencey bağırsaklarını birbirinden ayrı ve cahil olarak tutun mümkün. Tasarım çikolata mantık fıstık ezmesi almak yok; çok hoşuma gitti.
Sorun şu ki, üçüncü bölümle ilgili olarak biraz bulanıkım ... model ya da görünüm değil. Herkesin neyi arayacağı, neyi yapması gerektiği, neyin doğru olduğu, sadece neyin yanlış olduğu hakkında kendi fikirleri var gibi görünüyor ... ve bir Sunucunun ViewModel olduğunda ve bir Görünümün ne zaman olması gerektiğini anlamaya çalışıyorum bunu yapmıyor çünkü Sunum Yapanın işi bu ve--
Şaşırıyorum.
Birinden aralarındaki farkı açıklamasını istemekten ziyade - çünkü bu zaten defalarca yapıldı (biliyorum; sayabileceğimden daha fazla makale okudum) - Bir düşünceyi duymak isterim Model üzerinde birkaç programcı kendim toplandım.
Bununla birlikte, bu tasarımı ne olarak sınıflandırırsınız ve belki de daha da önemlisi, bunun hakkında açıkça berbat bir şey görüyor musunuz? Tabii, bu gerçekten sağlam bir tasarımsa iyi yaptığımı duymak isterim, ama övgü konusunda sağlam bir tavsiye vermeyi tercih ederim.
Not: Model Görünümü'nün gizemli üçüncü kısmı için "Köprü" kullanacağım. "olması gereken" şeyin bilinçaltı önerilerinden kaçınmak için.
model
- Veriler üzerinde otoritedir.
- Köprüden istenen değişiklikler hakkında bilgi alır.
- Verilerin diğer verilerle ilişkisine ilişkin tüm mantığı içerir ve gerçekleştirir.
Veri değiştiğinde Bridge'i bilgilendirir (Bridge'in ilgilendiğini ifade ettiği veriler için).Kelime düzenleme: Dış abonelerin (hakkında hiçbir şey bilmediği) durumunu veya hesaplama sonuçlarını izlemesine izin verir.- Görünüm hakkında sıfır bilgiye sahiptir.
Görünüm
- Kullanıcıya verileri görüntülemek ve işlemek için bir yol sağlamakla ilgilenir.
- Bridge'den veri güncellemeleri hakkında bilgi alır.
- Kullanıcıya veri ve kontrollerin nasıl sunulacağı ile ilgili tüm mantığı içerir ve gerçekleştirir.
- Kullanıcı, Modeli (muhtemelen) etkileyen bir eylem gerçekleştirdiğinde Bridge'i bilgilendirir.
- Köprüye hangi bilgileri ilgilendirdiğini bildirir.
- Model hakkında sıfır bilgiye sahiptir.
Köprü
- Model ve Görünüm arasındaki koordinatör ve çevirmen.
- Model ile Görünüm arasında iletilen bilgilerde uygun biçimlendirme değişikliklerini yapar.
- "Kimin neyi bilmesi gerektiğine" ilişkin bilgileri tutar.
- Hem Model hem de Görüş bilgisine sahiptir.
ek Notlar
- Daha karmaşık programlarda, birden fazla Model olması yaygındır. Bu durumda, Köprü tipik olarak çoklu Modeller arasında koordinasyon / çeviri işini üstlenir ve böylece protocall / API / tasarım Modellerinin ne şekilde inşa edilmesi gerektiği konusunda otorite olur. (örneğin, bir kart oyunu programı oluşturuyorsanız ve alternatif bir deste karıştırma modeli oluşturmak istiyorsanız, Bridge ile düzgün iletişim için hangi işlevlerin gerekli olduğunu belirlemek için Bridge'i kullanmalısınız.)
- Yalnızca bir Görünüm ve Model içeren küçük basit programlarda, Bridge'in her iki tarafta hangi işlevselliğin mevcut olduğunu "varsayması" yaygındır. Ancak, programlar daha karmaşık hale geldikçe, Görünümlerin ve Modellerin işlevlerini Köprü'ye rapor etmeleri önerilir, böylece verimsizliklerden ve buggy varsayımlarından kaçınabilir.
Bence neredeyse örtüyor. Elbette, kullanmaya eğilimli olduğum tasarımla ilgili sorularınızı memnuniyetle karşılıyorum ve aynı şekilde herhangi bir öneriyi teşvik ediyorum.
Ve her zaman olduğu gibi, zaman ayırdığınız için teşekkür ederim.