Sparround

GoF patternləri Android-də

Müsahibədə pattern tərifini əzbər demək yox, Android-də harada rastlaşdığını göstərmək qiymətləndirilir:

  • Singleton — tək instansiya: Kotlin-də object, DI-da @Singleton. Retrofit, Room instansiyaları.
  • Builder — mürəkkəb obyektin addım-addım qurulması: OkHttpClient.Builder(), NotificationCompat.Builder, AlertDialog.Builder. Kotlin-də named/default arqumentlər çox halda əvəz edir.
  • Factory — yaratma məntiqinin gizlədilməsi: ViewModelProvider.Factory, Fragment.instantiate.
  • Observer — hadisəyə abunəlik: LiveData/Flow, listener-lər, BroadcastReceiver.
  • Adapter — uyğun olmayan interfeyslərin "tərcüməsi": RecyclerView.Adapter (data ↔ view holder).
  • Facade — mürəkkəb altsistemə sadə üz: Repository pattern məhz budur.
  • Strategy — dəyişdirilə bilən alqoritm: interceptor zənciri, image loader konfiqurasiyaları.
  • Decorator — davranışın üstünə əlavə: OkHttp interceptor-ları sorğunu "bəzəyir".
PatternAndroid-də nümunəBir cümlə mahiyyət
Singleton`object`, Retrofit instansiyasıTək instansiya, qlobal giriş
BuilderOkHttpClient.BuilderMürəkkəb obyekti addım-addım qur
ObserverFlow/LiveData collect/observeDəyişikliyə abunə ol
AdapterRecyclerView.Adapterİki uyğunsuz interfeysi calaşdır
FacadeRepositoryMürəkkəbliyə sadə qapı
DecoratorOkHttp InterceptorDavranışı sarıyaraq genişləndir

Singleton-un tənqidi də soruşulur: qlobal mutable state, gizli asılılıqlar, testdə əvəzlənməzlik. Müasir cavab: singleton DI konteynerində scope kimi idarə olunmalıdır (@Singleton), object-in içində state saxlamaq yox. "Singleton antipattern-dirmi?" sualına balanslı cavab: pattern deyil istifadəsi problemdir — stateless util üçün object normaldır, mutable qlobal state üçün yox.

🛠 Tapşırıq

Android SDK-da pattern ovu: 6 pattern seç və hər biri üçün SDK-dan real nümunə tap (kodda Ctrl+B ilə mənbəyə keç).

  • OkHttpClient.Builder, RecyclerView.Adapter, ViewModelProvider.Factory, Flow/LiveData, Repository, Interceptor.
  • Sonra öz layihəndə bir Strategy tətbiq et: interfeys + iki implementasiya + DI ilə seçim.

Bitdi sayılır: hər pattern üçün "niyə məhz burada bu pattern" cavabın varsa.

📚 Mənbələr və sənədlər