Google tarafından hazırlanan sunumlara baktığımızda MVP için;
- GWT dünyasında testleri kolaylaştırdığını
- View ile Controller bağlantısının olmadığını
- Daha rahat kod geliştirildiğini
- GWT dünyasında testleri zorlaştırdığını
- View ile Controller bağlantısının olduğunu (Katı Bağ oluşturuyor diye)
- 1980 lerden kalma olduğunu
Google'ın değerlendirmeleri pek insaflıymış gibi gelmedi bana. Evet GWT framework'ünde testleri kolaylaştırdığı doğru olabilir fakat MVC' de View ile Controller' un doğrudan bağlantısı olmak zorunda değil, bu tarz bir kullanım sadece programcının tercihi olabilir. Ayrıca bir teknolojinin eski olması onun kötü olduğu anlamına gelseydi bugün kullandığımız ilişkisel veritabanlarının en berbat teknolojiler olaması gerekirdi zira 1970 li yıllarda geliştirilmişti. Benzer şekilde C dili ve HTML de çok eski zamanlara ait olmalarına rağmen günümüzde yaygın olarak kullanılmakta.
MVP desenindeki Presenter, Controller ile hemen hemen aynı yapıya sahip, tek fark; MVP'de bulunan EventBus sınıfı. Bu sınıf MVP katmanları arasında haberleşmeden sorumlu. Model, View'i, View'de Presenter'ı tanımıyor. Soyutlama açısından hoş bir yaklaşım. MVP sınıflarındaki tüm olaylar EventBus tarafından handle edilidiği için dispatch da bu sınıfın denetiminde oluyor. Özetle, kimse kimseyi tanımıyor ama EventBus herkesi tanıyor ve haberleştiriyor. Bunun tek dezavantajı ise fazladan bir sınıfımızın olması.
MVP'deki EventBus işlevini MVC' deki Controller sınıfı pekala yapabilir. MVC'nin gerçekleştirimine göre, View ve Model sınıfları birbirlerini tanımayabilir ve bütün denetim Controller' da olabilir. Zaten adından da anlaşıldığı gibi Controller sınıfı herşeyi kontrol eden ve iş mantıklarının yer aldığı sınıflar olmalıdır.
Bence, kullanılan dilin imkanları ve programcının tercihlerine göre MVP olsun MVC olsun çok işe yarayabilecekleri gibi bir çok sıkıntının kaynağı da olabilirler. MVC nin en büyük avantajı, genel kabul görmüş olması ve defalarca kendisini ispat etmiş olmasıdır. MVP henüz yeni olduğu için kabul zamanına ihtiyacı var. Ayrıca MVP'nin tercih edilebilmesi için daha net kazanımlar sunması lazım. Controller'a ait bir kısım görevleri ayrı bir sınıfta ele almak ve Model ile View arası iletişim için olay temelli haberleşme yapmak çok cazip bir kazanım gibi durmuyor.
Hiç yorum yok:
Yorum Gönder