İş mantığı ile ne demek istediğine bağlı. Modelin içeriğine anlam veren herhangi bir "mantık", modelde olmalıdır. Bağlantılı soruda en yüksek oyu alan cevap, "iş mantığını" veriyle ilgili herhangi bir şey olarak tanımlamaktadır; Bu, bir işletmenin verilerinin onun işi olduğuna göre mantıklı geliyor!
Bir keresinde, tam olarak bu konuda devam eden Rails'in yaratıcısı tarafından bir örnek gördüm - modele "iş mantığı" koymak değil. Örneği, bir denetleyici sınıfı ve uygulama kaydı ve oturum açma için bir yöntemdi - düz metin olarak verilen bir parola, modele eklenmeden veya modele karşı sorgulanmadan önce şifrelenmişti (bir veritabanı).
Denetleyici mantığı olmayan ve doğrudan modele ait bir şeyin daha iyi bir örneğini düşünemiyorum.
Model, taşınabilirlik endişelerini azaltan sayısız veri deposuna bir arayüz olabilir. Model arayüzün aslında “kontrolör” olduğu konusunda burada kafa karışıklığı bulabileceğiniz biri var.
Genel olarak, denetleyici modeli ve görünümü birbirine bağlar (uygulamanın et ve patatesleridir). Kakao geliştirmede, denetleyicinin XCode GUI (denetleyici nesneleri ve ciltleri) üzerinden kullanıldığı noktaya basit olabilir.
GoF'un MVC'deki "Tasarım Desenleri" bölümü, gevşek bir şekilde alıntı yaptı:
MVC sınıf üçlüsü, Smalltalk-80'de kullanıcı arayüzleri oluşturmak için kullanılır. Model uygulama nesnesi, Görünüm ekran sunumu ve Denetleyici, kullanıcı arabiriminin kullanıcı girişine nasıl tepki vereceğini tanımlar. MVC, aralarında bir abone olma / bildirme protokolü kurarak görünümleri ve modelleri ayırır. Aşağıdaki şemada bir model ve üç görünüm gösterilmektedir. Basitlik için denetleyicileri dışarıda bıraktık.
MVC tamamen kullanıcı arayüzü ile ilgilidir. Odak, model üzerinde ve görünümde - verileri tanımlama ve gösterme. "Abone ol / bildir protokolünü" not edin - kontrol cihazınızın geldiği yer burasıdır. İstediğiniz tüm görünümleri oluşturabilirsiniz; Protokole bağlı kaldıkları sürece, modele veya kontrol cihazına asla dokunmanız gerekmez.
Özellikle web geliştirmeden bahsediyorsanız, IMHO birçok popüler web çerçevesi MVC terimi ve bileşen tanımları ile hızlı ve kayıtsızdır.