আমি https://github.com / গুগল / গুইস / উইকি / অ্যাসিস্টড ইনজেক্ট পড়েছি , তবে এটি কীভাবে অ্যাসিস্টড ইন্জেক্ট আর্গুমেন্টের মানগুলিতে পাস করতে হবে তা বলে না। ইনজেক্টর.গেট ইনস্ট্যান্স () কলটি দেখতে কেমন হবে?
আমি https://github.com / গুগল / গুইস / উইকি / অ্যাসিস্টড ইনজেক্ট পড়েছি , তবে এটি কীভাবে অ্যাসিস্টড ইন্জেক্ট আর্গুমেন্টের মানগুলিতে পাস করতে হবে তা বলে না। ইনজেক্টর.গেট ইনস্ট্যান্স () কলটি দেখতে কেমন হবে?
উত্তর:
এর javadoc চেক করুন FactoryModuleBuilder বর্গ।
AssistedInjectআপনি Factoryনিজের দ্বারা কোডিংয়ের পরিবর্তে ক্লাসের জন্য ডায়নামিকভাবে কনফিগার করতে পারবেন । এটি প্রায়শই কার্যকর হয় যখন আপনার কোনও অবজেক্টের নির্ভরতা থাকে যা ইনজেকশন দেওয়া উচিত এবং কিছু পরামিতি যা অবজেক্ট তৈরির সময় নির্দিষ্ট করতে হবে।
ডকুমেন্টেশন থেকে উদাহরণ a RealPayment
public class RealPayment implements Payment {
@Inject
public RealPayment(
CreditService creditService,
AuthService authService,
@Assisted Date startDate,
@Assisted Money amount) {
...
}
}
এটি দেখুন CreditServiceএবং AuthServiceধারক দ্বারা ইঞ্জেকশন করা উচিত তবে স্টার্টডেট এবং পরিমাণটি তৈরির সময় কোনও বিকাশকারী দ্বারা নির্দিষ্ট করতে হবে।
সুতরাং পরিবর্তে একটি ইনজেকশনের Paymentআপনি একটি ইনজেকশনের হয় PaymentFactoryপ্যারামিটার হিসাবে চিহ্নিত করা হয়েছে সঙ্গে @AssistedএRealPayment
public interface PaymentFactory {
Payment create(Date startDate, Money amount);
}
এবং একটি কারখানা বাঁধাই করা উচিত
install(new FactoryModuleBuilder()
.implement(Payment.class, RealPayment.class)
.build(PaymentFactory.class));
কনফিগার করা কারখানাটি আপনার ক্লাসে ইনজেকশনের ব্যবস্থা করা যেতে পারে।
@Inject
PaymentFactory paymentFactory;
এবং আপনার কোড ব্যবহৃত
Payment payment = paymentFactory.create(today, price);
RealPaymentএকটি ইন্টারফেস বাস্তবায়ন করার প্রয়োজন নেই।