2016-03-19 23 views
6

MVP'de oturum açmanın nasıl gerçekleştirileceğini gösteren çok sayıda proje gördüm, ancak Google/Facebook girişiyle ilgili hiçbir şey bulamıyor.MVP mimarisini üçüncü taraf SDK'larla nasıl izlerim?

Oturum açma akışının Android bileşenleri yaşam döngüsüne güçlü bir şekilde bağlı olduğu durumda ne yapmalıyız? MVP'nin ana faydasını Context'un üzerinde bir soyutlama oluşturduğumdan görüyorum, ancak bu soyutlama, örneğin Facebook giriş akışını takip etmemiz gerektiğinde çok karmaşık görünecektir: CallbackManager ile FacebookCallback'u kaydetmeniz gerekiyor, logInWithReadPermissions() numaralı telefonu arayın. Fragmanı), onActivityResult()'u callbackManager'a verin ve bu da FacebookCallback'in yöntemlerini tetikleyecektir.

Ne aklında var

gerçekleştirme aşamasında Bağlamında hakkında bilmek ve GoogleApiClient başlatır
interface AuthInteractor { 
    void doFacebookLogin(); 
    void doGoogleLogin(); 
} 

gibi bir şey yaratmaktır. Presenter'a enjekte edilecek, ancak tüm bu geri bildirimlerle (özellikle de Facebook'un SDK'sında) olan şeyler çok karmaşık hale gelecektir. Böyle durumlarda MVP'yi atlamak daha iyi değil mi?

+0

kadar emin değil, ama ben arayüze katılıyorum, IMHO Ben aynı arayüzü uygulayan bir FacebookLogin ve GoogleLogin sınıfı oluşturmak ve her giriş akışının özelliği soyut. – jonathanrz

+0

@ jonathanrz evet, önceki projelerimde de aynısını yaptım ve bu kodu yeniden kullanacağım, iki yönetici AuthInteractorImpl üyesi olabilir. Ama gerçekten böyle bir mimariyi sevmiyorum ve MVP – Yaroslav

+0

olmadan bunu daha iyi yazmam, çünkü denetleyici içinde kimlik doğrulama akışı kalmalıdır, neden MVP modelini kırdığını anlamıyorum. Sunucunun bir Etkinlik olmaması durumunda, – jonathanrz

cevap

2

Ben kafanın içinde tek birine iki "fikirleri" birleştirmek için çalışıyoruz çünkü bu soruyu soruyorsun sanırım:

  1. Faaliyet/Fragment
  2. Üçüncü şahıs SDK'ları bağlı MVP görüntüleridir Ben Android'de MVP uygulamaları araştırılmış zaman uygulamanıza

mevcut platformu kaynaklarına erişmek için (en azından ya, Bağlam) Etkinliğini Ben yaklaşık iki yıl önce benzer sorunlar tökezledi ve bir geldi tüm ihraçları çözmenin tek yolu Bu türden eserler, MVP görüşleri olan Etkinlik/Fragman fikrini terk etmektir.

bu yazı bu konuda ayrıntılı bir tartışma yayınladı: Why Activities in Android are not UI Elements

Ve Android'de daha iyi bir MVP nasıl uygulanacağına ilişkin bir öğretici da var: Sorunuza hakkında MVP and MVC in Android

İlgili konular