Model-View-ViewModel (MVVM) tasarım modelindeki 'ViewModel' ile aynı şey mi?
Hayır!
Yani olurdu bu :
Döngüler var. Bob Amca döngüden dikkatli bir şekilde kaçınır .
Bunun yerine:
Kesinlikle döngüleri yok. Ancak bu, görünümün bir güncelleme hakkında nasıl bildiğini merak etmenizi sağlar. Birazdan buna ulaşacağız.
ya da basit bir Veri Aktarım Nesnesi (DTO) mu?
Bob'u bir önceki sayfadan alıntılamak için:
İsterseniz temel yapıları veya basit veri aktarım nesnelerini kullanabilirsiniz. Veya bir hashmap içine paketleyebilir veya bir nesneye inşa edebilirsiniz.
Temiz Mimari p207
Yani, tabii, eğer istersen.
Ama şiddetle gerçekten sizi rahatsız eden şüpheli bu :
UML'nin bu sevimli küçük kötüye kullanımı, kaynak kod bağımlılığının yönünü kontrol akış yönüyle karşılaştırır. Sorunuzun cevabını burada bulabilirsiniz.
Kullanım ilişkisinde:
kontrol akışı, kaynak kod bağımlılığının yaptığı yönde gider.
Uygulama ilişkisinde:
kontrol akışı tipik olarak kaynak kod bağımlılığının tersi yönde ilerler.
Bu, gerçekten buna baktığınız anlamına gelir:
Kontrol akışının Sunum Yapandan Görünüme asla ulaşamayacağını görebilmelisiniz.
Nasıl olabilir? Bu ne demek?
Bu, görünümün kendi iş parçacığına sahip olduğu anlamına gelir (bu olağandışı değildir) veya (@Euphoric işaret ettiği gibi) kontrol akışı, burada tasvir edilmeyen başka bir şeyden görünüme geliyor.
Aynı iş parçacığıysa, Görünüm, Görünüm Modelinin ne zaman okunmaya hazır olduğunu bilecektir. Ancak durum buysa ve görünüm bir GUI ise, kullanıcı DB'yi beklerken ekranı hareket ettirdiğinde ekranı yeniden boyamakta zorlanır.
Görünüm kendi iş parçacığına sahipse, kendi kontrol akışına sahiptir. Bu, Uygulamayı uygulamak için, değişiklikleri fark etmek için Görünüm Modeli'ni sorgulamak zorunda kalacağı anlamına gelir.
Sunucu, Görünüm'ün varlığını ve Görünüm, Sunucu'nun var olduğunu bilmediğinden birbirlerini arayamazlar. Olayları birbirlerine fırlatamazlar. Olabilecek tek şey, Sunucunun View-Model'e yazacağı ve View View-Model'i okuyacağıdır. Ne zaman hissediyorsa.
Bu şemaya göre, View ve Presenter'ın paylaştığı tek şey View-Model hakkında bilgidir. Ve bu sadece bir veri yapısı. Yani herhangi bir davranışı olmasını beklemeyin.
Bu imkansız görünebilir, ancak View-Model karmaşık olsa bile çalışması sağlanabilir. Küçük bir güncellenmiş alan, tüm görünümü bir değişiklik tespit etmek için anket gerekir.
Şimdi elbette gözlemci desenini kullanmakta ısrar edebilir veya bu sorunu sizden gizlemek için bazı çerçeveli şeylere sahip olabilirsiniz, ancak lütfen bunu yapmak zorunda olmadığınızı anlayın.
İşte kontrol akışını gösteren biraz eğlenceli:
Daha önce tanımladığım yönlere göre akışı gördüğünüzde, gördüğünüz şeyin geri dönen bir çağrı olduğunu unutmayın. Bu hile Manzaraya ulaşmamıza yardımcı olmaz. İlk önce Kontrolör olarak adlandırılan şeye dönmezsek. Veya görünümü değiştirebilmeniz için tasarımı değiştirebilirsiniz . Bu aynı zamanda Veri Erişimi ve Arayüzü ile ilgili bir yo-yo sorununun başlangıcını giderir .
Burada öğrenilecek tek şey, Kullanım Senaryosu Kullanıcının sunum yapan kişiyi son çağırdığı sürece istediği sırayla işleri çağırabilmesidir.