উপাদান নির্ভরতা - আপনি যখন দুটি উপাদান স্বাধীন রাখতে চান তখন এটি ব্যবহার করুন।
উপ-উপাদানগুলি - আপনি দুটি উপাদান একত্রে রাখতে চাইলে এটি ব্যবহার করুন।
কম্পোনেন্ট নির্ভরতা এবং উপ- উপাদানগুলি ব্যাখ্যা করার জন্য আমি নীচের উদাহরণটি ব্যবহার করব । উদাহরণটি লক্ষ্য করার মতো কয়েকটি বিষয় হ'ল:
SomeClassA1কোনও নির্ভরতা ছাড়াই তৈরি করা যায়। পদ্ধতির মাধ্যমে ModuleAউদাহরণ সরবরাহ SomeClassA1করে provideSomeClassA1()।
SomeClassB1ছাড়া তৈরি করা যায় না SomeClassA1। পদ্ধতির আর্গুমেন্ট হিসাবে কোনও উদাহরণ পাস করা হলে কেবল তার ModuleBউদাহরণ সরবরাহ করতে পারে ।SomeClassB1SomeClassA1provideSomeClassB1()
@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()ModuleBModuleB
উপাদান নির্ভরতা
নীচে উপাদান নির্ভরতা উদাহরণে নিম্নলিখিত পয়েন্টগুলি নোট করুন:
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টিকা আছে।
ComponentAModuleBইন্টারফেস পদ্ধতি মাধ্যমে ঘোষণা করেছে 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);
}
}