2017-01-09 21 views
17

Android'i bir süredir geliştirmedim ve Gradle bağımlılıkları gibi yeni özelliklerle işleri doğru yapmaya çalışıyorum.Android'de taslak bağımlılıkları taşınıyor

İhtiyaçlarınıza uygunluk için belirli bir bağımlılığı değiştirmeniz gerektiğinde en iyi uygulamaların neler olduğunu merak ediyorum. Java birden çok inheritances desteklemediği

Adapter --> AdapterA 
Adapter --> AdapterB 

, ben her iki kitaplıkları olur birlikte çalışmasını sağlamak için tek yol tahmin Örneğin:

, en biz Adaptörü sınıflara göre RecyclerView işlevselliğini genişletmek iki kitaplıkları olduğunu varsayalım sınıflara hiyerarşi şuna benzer şekilde bunlardan birini değiştirme hakkında oluşur: doğru duyuyorum ve bu gitmek için yol ise

Adapter --> AdapterA --> AdapterB 

, sonra ne değiştirerek ve kütüphane entegre iyi yol olacağını, burada seçenekleri Aklıma:

haklı veya önermek Lütfen kaynak GitHub'dan

  1. Fork ve uygulamaya bir yerel modül olarak kütüphaneyi ekle çatallı modifiye kütüphaneye
  2. eklemek için JitPack kullanmak ve değiştirmek neyi daha iyi ve bunu başarmak için başka alternatifler varsa.

cevap

6

Diğer kütüphaneye bağlı olan ve bunu değiştiren bir yerel modül yapıyorum. Yaptığınız değişiklikleri kaydetmeyi unutmayın. İdeal olarak, modülü VCS'de ayrı bir taahhüt olarak içe aktarırsınız ve daha sonra başka bir taahhütte değiştirirsiniz.

Bu, kütüphaneyi güncellemek istiyorsanız, yapmanız gereken tek şey, yapmanız gereken tek şey yeni sürüm için kaynağın kopyasını kopyalamak ve daha sonra aynı değişiklikleri yapmaktır. Ancak, diğer yaklaşımı kullanırsanız, tüm değişiklikleri karmaşıklık ekleyen GitHub'a da itmeniz gerekir, ancak değişikliklerinizi başkalarıyla paylaşmak istemediğiniz sürece az fayda sağlarsınız.

6

Bu alışılmadık bir durum gibi görünüyor - Belki bir örnek
Ayrıca çatallama kütüphaneleri başvurmadan önce kompozisyonu dikkate yardımcı olacaktır. https://en.wikipedia.org/wiki/Composition_over_inheritance

class YourAdapter { 
    private AdapterA adapterA 
    private AdapterB adapterB 
} 
+3

nasıl (hatta bir adaptör değil) ana adaptörden oluşan adaptörleri kullanmak istiyorsunuz? –

+0

Belki de tarif edilen örnek olağandışı bir durumdur, ancak mevcut bir bağımlılığı çatallanmaya ve değiştirmeye çalıştığım birden çok durumu, hata düzeltmeden kişiselleştirmeye ya da özellik eklemeye karar verebiliyorum ... – apascual

+0

@ cricket_007 ana adaptör Bağdaştırıcı sınıfını genişletmelidir ve yöntemlerini uygular. Oradan, gereksinimlerinize göre çocuklardan işlevsellik birleştirebilirsiniz. Bu bazı durumlarda oldukça işe yarayabilir, ancak diğer durumlarda bir çatalın kaçınılmaz olabileceğine katılıyorum. – wkarl