উপাদান নির্ভরতা - আপনি যখন দুটি উপাদান স্বাধীন রাখতে চান তখন এটি ব্যবহার করুন।
উপ-উপাদানগুলি - আপনি দুটি উপাদান একত্রে রাখতে চাইলে এটি ব্যবহার করুন।
কম্পোনেন্ট নির্ভরতা এবং উপ- উপাদানগুলি ব্যাখ্যা করার জন্য আমি নীচের উদাহরণটি ব্যবহার করব । উদাহরণটি লক্ষ্য করার মতো কয়েকটি বিষয় হ'ল:
SomeClassA1
কোনও নির্ভরতা ছাড়াই তৈরি করা যায়। পদ্ধতির মাধ্যমে ModuleA
উদাহরণ সরবরাহ SomeClassA1
করে provideSomeClassA1()
।
SomeClassB1
ছাড়া তৈরি করা যায় না SomeClassA1
। পদ্ধতির আর্গুমেন্ট হিসাবে কোনও উদাহরণ পাস করা হলে কেবল তার ModuleB
উদাহরণ সরবরাহ করতে পারে ।SomeClassB1
SomeClassA1
provideSomeClassB1()
@Module
public class ModuleA {
@Provides
public SomeClassA1 provideSomeClassA1() {
return new SomeClassA1();
}
}
@Module
public class ModuleB {
@Provides
public SomeClassB1 provideSomeClassB1(SomeClassA1 someClassA1) {
return new SomeClassB1(someClassA1);
}
}
public class SomeClassA1 {
public SomeClassA1() {}
}
public class SomeClassB1 {
private SomeClassA1 someClassA1;
public SomeClassB1(SomeClassA1 someClassA1) {
this.someClassA1 = someClassA1;
}
}
যখনই কম্পোনেন্ট / সাবকম্পোনেন্ট ঘোষণা ঘোষণা শুরু করা হবে তখন ড্যাগার পদ্ধতির SomeClassA1
আর্গুমেন্ট হিসাবে উদাহরণটি পাস করার যত্ন নেবে । নির্ভরতা কীভাবে পূরণ করতে হয় তা আমাদের ডাগরকে নির্দেশ দিতে হবে। কম্পোনেন্ট নির্ভরতা বা উপ- কম্পোনেন্ট ব্যবহার করে এটি করা যেতে পারে ।provideSomeClassB1()
ModuleB
ModuleB
উপাদান নির্ভরতা
নীচে উপাদান নির্ভরতা উদাহরণে নিম্নলিখিত পয়েন্টগুলি নোট করুন:
ComponentB
টিকা রোধের dependencies
পদ্ধতির মাধ্যমে নির্ভরতা নির্ধারণ করতে হবে @Component
।
ComponentA
ঘোষণা করার দরকার নেই ModuleB
। এটি দুটি উপাদানকে স্বাধীন রাখে।
public class ComponentDependency {
@Component(modules = ModuleA.class)
public interface ComponentA {
SomeClassA1 someClassA1();
}
@Component(modules = ModuleB.class, dependencies = ComponentA.class)
public interface ComponentB {
SomeClassB1 someClassB1();
}
public static void main(String[] args) {
ModuleA moduleA = new ModuleA();
ComponentA componentA = DaggerComponentDependency_ComponentA.builder()
.moduleA(moduleA)
.build();
ModuleB moduleB = new ModuleB();
ComponentB componentB = DaggerComponentDependency_ComponentB.builder()
.moduleB(moduleB)
.componentA(componentA)
.build();
}
}
SubComponent
সাবকম্পোন্ট উদাহরণে নিম্নলিখিত পয়েন্টগুলি নোট করুন:
- যেমন
ComponentB
নির্ভরতা নির্ধারণ করে নি ModuleA
, এটি স্বাধীনভাবে বাঁচতে পারে না। এটি উপাদান সরবরাহ করবে যা সরবরাহ করবে ModuleA
। অতএব এটি একটি @Subcomponent
টিকা আছে।
ComponentA
ModuleB
ইন্টারফেস পদ্ধতি মাধ্যমে ঘোষণা করেছে componentB()
। এটি দুটি উপাদান একত্রিত করে। আসলে, ComponentB
শুধুমাত্র মাধ্যমে সূচনা করা যেতে পারে ComponentA
।
public class SubComponent {
@Component(modules = ModuleA.class)
public interface ComponentA {
ComponentB componentB(ModuleB moduleB);
}
@Subcomponent(modules = ModuleB.class)
public interface ComponentB {
SomeClassB1 someClassB1();
}
public static void main(String[] args) {
ModuleA moduleA = new ModuleA();
ComponentA componentA = DaggerSubComponent_ComponentA.builder()
.moduleA(moduleA)
.build();
ModuleB moduleB = new ModuleB();
ComponentB componentB = componentA.componentB(moduleB);
}
}