4 entry daha
  • kullanıcıyla etkileşim kuran bir uygulamanın "model", "view" ve "viewmodel" adındaki üç parçadan oluşmasını öngörür. ilk martin fowler ortaya atmış. martin abi ne dese doğrudur.

    model, uygulamanızın kullandığı ve işlediği veriyi temsil eden, onlar üzerinde işler yapan kodların bulunduğu class'ların her birine denir. mesela bir yapılacak işler listesi uygulamasında modeliniz:

    class yapilacakisler {
    public list<string> isler;
    }

    olabilir gayet. bu haliyle modelde diske kaydetme imkanı yok ama koymak istediğinizde onu da yapilacakisler sınıfının içine koyabilirsiniz.

    view, model'ın kullanıcıya nasıl gösterileceğini ifade eden şablonlara denir. bu da yapılacak işler örneğinden "liste" içeren bir xaml kodu olabilir, bir html şablonu olabilir. artık ne isterseniz.

    viewmodel: model'ınızı view'da gösterirken ek bilgilere, property'lere ya da dönüşüm kodlarına gerek olabilir. view ile model birbirinden ful bağımsız olması gerektiğinden bunları model'ınıza, ya da view'ün koduna eklemek yerine viewmodel denen yeni bir sınıf yaratırsınız. mesela "kaç yapılacak iş" olduğunu da view'da göstermek istiyorsunuz ama model'da doğrudan ona eşleşecek property yok. listenin count'una da doğrudan bind imkanı olmadığını farz edelim. o zaman şöyle bir yeni sınıf yaratıyoruz:

    class yapilacakislerviewmodel: yapilacakisler {
    public int kactaneyapilacakis => isler.count;
    }

    (public int a => b tarzı sözdizimi garip geldiyse o da c# 6.0'la gelen yeni sadeleştirilmiş sözdizimi. aslında özünde public int a { get { return b; } }'ye denk geliyor)

    isimde "viewmodel" olması tamamen ayrıştırmak için kolaylık olsun diye. siz bunlara dilerseniz "hobarak" diyebilirsiniz. view'u da doğrudan viewmodel'a bağladığınızda artık bu yeni property'yi de kullanabilir hale gelir. sizin de çekirdek uygulama veri yapılarında herhangi bir değişiklik yapmanıza gerek olmaz.
8 entry daha
hesabın var mı? giriş yap