English
Open in Telegram

Post #ARCH-4 DIP - Dependency Inversion Principle

23 September 2026
F
Flutter Dev Talk
#ARCH-4 DIP - Dependency Inversion Principle 4.1: SOLID ning D tamoyili yani Dependency Inversion (o'zbekcha aytganda teskari bog'liqlik) nima ? Nima uchun ishlatiladi ? Nima foydasi bor ? Dependency Inversion - soddaroq aytganda: Biznes logika texnik detallarni bilmasligi kerak. E aka bu ham bo'lganku, sal soddalashtiringee desangiz hop unda yanada soddalashtiraman. Quyidagicha flow bor: Transfer → Confirmation → Bill → Payment va buni biz oddiygina Payment bloc ichida yozib qo'ya qolsak bo'ladi: class PaymentBloc { final Dio dio = Dio(); Future<void> pay() async { await dio.post('/payment'); } } Lekin bloc bu holatda 2 narsadan habardor bo'lib qoladi: PaymentBloc biznes flowni va http request qanday ketayotganini. Mobodo ertaga api o'zgarsa, qo'shimcha validatsiya qo'shilsa yoki test yozmoqchi bo'lsak biznes qismga tegishga to'g'ri keladi. DIP ni qo'llamasdan oldin dependency yo'nalish quydagicha edi: PaymentBloc ↓ Dio ↓ Backend DIP bilan esa shu ko'rinishga keladi: PaymentBloc ↓ PaymentRepository ← abstraction ↑ PaymentRepositoryImpl ↓ Dio ↓ Backend va PaymentBloc esa ushbu holatga keladi: class PaymentBloc { final PaymentRepository repository; PaymentBloc(this.repository); Future<void> pay() async { await repository.pay(); } } quyi qismlarni o'zilar tushunvoldilar degan umiddaman. Hop endi nima o'zgardi ?. Endi PaymentBloc hechnimadan habari yoq shunchaki menga pay qilish uchun nimadir berilar deydi holos. Va agar endi api o'zgarsa yoki boshqa service qilinsa PaymentBloc ga umman qiziq emas u faqat pay uchun service kutadi holos. o'zgarishlar esa pastki texnik qisimlarda yuz beradi. Manashu yerda Dependency Inversion'ning manosi chiqadi. Ya'ni texnik o'zgarishlar biznes qoidalarga moslashishi kerak, biznes qoidalar texnik o'zgarishlarga emas. 4.2: Endi esa DIP bilan DI ni farqini aniqlashtirvolamiz. Dependency Inversion - prinsip. Dependency Injection - texnika DIP - Dependency qaysi tomonga qarashi kerakli haqidagi arxitekturaviy qaror. DI - Dependency objectni klassga qanday yetkazish usuli. Quyidagi ikki usul ham Dependency Injection hisoblanadi: PaymentBloc( PaymentRepositoryImpl(Dio()), ); get_it bilan getIt.registerLazySingleton<PaymentRepository>( () => PaymentRepositoryImpl(getIt<Dio>()), ); getIt.registerFactory( () => PaymentBloc(getIt<PaymentRepository>()), ); Xulos: Senior sifatida arxitektura qurayotkanda dependency yo'nalishlarni to'g'ri qurish keyinchalik ko'dlarni o'zgarish chegaralari boshqarish va oson testlashga yordam beradi.
1 · 126 ·

Nearby in the feed

FFlutter Dev Talk#ARCH-3 MVA - Minimum Viable Architecture MVA - eng kam faylli arxitektura emas balki productni hozirgi holati uchun ishlashga yetarli sodda arxitektura xisoblaFFlutter Dev Talk#fun Senior: Buglarni qanday to'g'irlading ? Junior: - Ko'dlarni o'chirvordim 😏. vs Junior: Buglarni qanday to'g'irlading ? Senior: - Sen yozgan ko'dlarni comme
this message
FFlutter Dev Talk#ARCH-5 IoC - Inversion of Control & Dependency Injection Oldingi postda DIP nima va uni DI dan farqi haqida gaplashgandik, hozir esa sizlar bilan IoC va DI bogFFlutter Dev TalkArxitektura bo'yicha overviewlar kimgadir foydali bo'lyaptimi 👀 , davom etaylikmi ?
FFlutter Dev TalkFlutter Dev Talk@flutterdevtalk · channel
133subscribers5posts in 30 days
Venue feed Open in Telegram

An open public feed from the search index ChatCrawler — “Google for public Telegram”; refreshed as the venue is crawled. Times are UTC.

Public content only, official Telegram API. About · FAQ · Index limits · Remove a page · Catalog · Search · How we count