خنجر 2 هو الابتدائية (الجزء 1)

محتوى

  1. مقدمة
  2. ما هو حقن التبعية ، مثال التبعية
  3. خنجر 2 - مقدمة
  4. أول استخدام للخنجر 2

مقدمة


لم يكتب المقال بواسطة مبرمج متقدم لنفس الكلمات العادية والمفهومة.
يستخدم هذا المقال رمز عينة Kotlin. خنجر الإصدار 2.17. مثال يمكن تنزيله في نهاية المقال.

ما هو حقن التبعية؟


حقن التبعية (حقن أو حقن التبعية) هو اعتماد فئة واحدة على أخرى. أي من أجل التشغيل الكامل لفئة واحدة ، هناك حاجة لتهيئة الفئة الأخرى.

على سبيل المثال ، لا يمكن أن تعمل فئة السيارة (السيارة) بدون فئة المحرك ، والتي بدورها لا يمكن أن تعمل بدون فئة الوقود. يبدو مثل هذا:

class Car(private var engine: Engine) class Engine ( private var fuel: Fuel) class Fuel(){ private val fuel = if(BuildConfig.DEBUG){ “benzine” } else { “diesel” } } 

في هذا المثال ، تعتمد فئة السيارة على فئة المحرك ، وهذا بدوره يعتمد على فئة الوقود.

خنجر 2 - مقدمة


خنجر هي مكتبة تساعد على تنفيذ حقن التبعية:. هذه مكتبة جوجل. وثائق مفصلة متاحة هنا .

إيجابيات الخنجر:

  • لا بد لي من كتابة رمز أقل boilerplate.
  • يساعد هيكل التبعيات.
  • إنه يبسط العمل إلى حد كبير عندما يكون هناك الكثير من التبعيات
  • رمز يصبح من السهل قراءة.

سلبيات الخنجر:

  • عدم وجود وثائق مفصلة
  • يحاول خنجر فهم نوايا المطور باستخدام التعليقات التوضيحية. يصبح الأمر معقدًا عندما لا يفهمك بشكل صحيح
  • ينشئ الخنجر رمزًا يصعب اكتشافه

أول استخدام للخنجر 2


بادئ ذي بدء ، تحتاج إلى إضافة خنجر إلى التطبيق. أنا أعرف 2 طرق كيفية القيام بذلك
1. افتح build.gradle (التطبيق) وأضف أثرًا.

1.1 في الجزء العلوي جدا في قسم الإعلان المساعد

 apply plugin: 'kotlin-kapt' 

1.2 في قسم التبعيات

 { ... kapt "com.google.dagger:dagger-compiler:$dagger_version" implementation "com.google.dagger:dagger:$dagger_version" } 

أقوم بتحديد إصدار الخنجر (dagger_version) في القسم

 ext { dagger_version = '2.17' } 

إذا لم تكن هذه هي الحالة ، فيجب إضافة القسم أعلى قسم Android.

2. إضافة مستودع Maven من خلال هيكل المشروع - التبعيات - إضافة تبعيات المكتبة

بعد مزامنة المشروع ، نحن على استعداد لتنفيذ التبعيات باستخدام الخنجر.

أولاً ، أنشئ فئات السيارات والمحركات والوقود:

 class Car constructor(private var engine: Engine) class Engine constructor(private var fuel: Fuel) class Fuel { private val fuelType = if(BuildConfig.DEBUG){ "benzine" }else{ "diesel" } } 

قبل صانعي فئات السيارات والمحركات والوقود ، نضيف التعليق التوضيحي لحقن الخنجر ، مما يجعل الخنجر يفهم أنه يجب تنفيذ هذه الفئات إذا لزم الأمر. نحصل على التتبع.

 class Car @Inject constructor(private var engine: Engine) class Engine @Inject constructor(private var fuel: Fuel) class Fuel @Inject constructor() { private val fuelType = if(BuildConfig.DEBUG){ "benzine" }else{ "diesel" } } 

يحتاج خنجر لمعرفة كيفية إنشاء جميع الكائنات التي يحتاجها لتنفيذ. من أجل سرد جميع الفئات التي ننفذها (Inject) ، يتم استخدام التعليق التوضيحي للمكون ، والذي تم تعريفه للواجهة (DaggerComponent).

يبدو مثل هذا:

 @Component interface DaggerComponent { fun getCar(): Car fun getEngine(): Engine fun getFuel(): Fuel } 

عند التصريح عن أساليب المكون ، فإن أسماء الطرق ليست مهمة ، ولكن الفئة التي يرجعون إليها.

في هذه الخطوة ، تحتاج إلى إنشاء مشروع (Build - Rebuild project). بعد ذلك ، سينشئ الخنجر الفئات اللازمة والمصنع لتهيئة المكونات. سيتزامن اسم المصنع مع اسم الواجهة التي نهيئ فيها فئات الخنجر ، باستثناء أنه سيتم إضافة البادئة "خنجر" ، أي في الإخراج ، نحصل على فئة DaggerDaggerComponent.

 // Generated by Dagger (https://google.imtqy.com/dagger). package com.example.dagger2; public final class DaggerDaggerComponent implements DaggerComponent { private DaggerDaggerComponent(Builder builder) {} public static Builder builder() { return new Builder(); } public static DaggerComponent create() { return new Builder().build(); } @Override public Car getCar() { return new Car(getEngine()); } @Override public Engine getEngine() { return new Engine(new Fuel()); } @Override public Fuel getFuel() { return new Fuel(); } public static final class Builder { private Builder() {} public DaggerComponent build() { return new DaggerDaggerComponent(this); } } } 

كل شيء جاهز. دعونا نحاول إنشاء حقل سيارة من النوع Car في MainActivity:

 private var car: Car = DaggerDaggerComponent.create().getCar() 

من خلال تشغيل التطبيق ، يمكنك التأكد من تهيئة حقل السيارة عند الوصول إليه

شفرة المصدر

Source: https://habr.com/ru/post/ar466725/


All Articles