2016-05-21 91 views
5

MVP desen uygular Aşağıdaki sözde kod göz önünde bulundurun:MVP tasarım deseni en iyi uygulama

interface Presenter { 
    void onSendClicked(); 
} 

interface View { 
    String getInput(); 
    void showProgress(); 
    void hideProgress(); 
} 

class PresenterImpl implements Presenter { 
    // ...ignore other implementations 
    void onSendClicked() { 
     String input = view.getInput(); 
     view.showProgress(); 
     repository.store(input); 
     view.hideProgress(); 
    } 
} 

class ViewImpl implements View { 
    // ...ignore other implementations 
    void onButtonClicked() { 
     presenter.onSendClicked(); 
    } 

    String getInput() { 
     return textBox.getInput(); 
    } 

    void showProgress() { 
     progressBar.show(); 
    } 

    void hideProgress() { 
     progressBar.hide(); 
    } 
} 

Ve burada MVP desen alternatif uygulama görebilirsiniz:

interface Presenter { 
    void saveInput(String input); 
} 

interface View { 
    void showProgress(); 
    void hideProgress(); 
} 

class PresenterImpl implements Presenter { 
    // ...ignore other implementations 
    void saveInput(String input) { 
     view.showProgress(); 
     repository.store(input); 
     view.hideProgress(); 
    } 
} 

class ViewImpl implements View { 
    // ...ignore other implementations 
    void onButtonClicked() { 
     String input = textBox.getInput(); 
     presenter.saveInput(intput); 
    } 

    void showProgress() { 
     progressBar.show(); 
    } 

    void hideProgress() { 
     progressBar.hide(); 
    } 
} 

bir MVP daha doğru uygulamasıdır Desen? Niye ya?

+0

Kod İnceleme bu soru için daha iyi bir yer olabilir, orada bazı iyi cevaplar alacaksınız: http://codereview.stackexchange.com/ –

+0

@Jezzabeanz, bunun için gerçek kod ihtiyacı var, pseudocode. – Riker

+0

Bir fikir sormadan nasıl bir fikir sorabilirim? – CarlLee

cevap

2

Benim Kısa cevap:

İlkini söyleyebilirim.

Benim uzun cevap:

Temelde MVP iki versiyonu vardır: Presenter'ı

Sizin sözde sınıfları denetlemek Pasif Görünüm ve Pasif View uygulaması oluşturur.

Farkı görmek için: Please check the first answer here. Onları ve aralarındaki farkı mükemmel bir şekilde tanımlar, bu yüzden burada içeriği kopyalamak gerekli değildir. Benim cevap

Sebep: Pasif View

Ana fikri mümkün olduğunca dilsiz bir görünümü var. Bazı kullanıcı eylemleri gerçekleştiğinde sunucuyu bilgilendirir ve GUI'den/üzerindeki değerleri almak ve ayarlamak için erişimcileri ve mutators ortaya çıkarır. Tüm bunlar, görüntüleme düzeyinde maksimum test edilebilirlik sağlamak için yapılır.

Buna bağlı olarak, görünüm, düğmeye basıldığında giriş metin kutusundan değer sağlaması gerektiğini bilmemelidir. Sadece sunucunun düğmeye basıldığını bildirmeli ve sunum yapan kişi için istediği herhangi bir kullanıcı girdisini toplayacaktır.

İlgili konular