একটি সিস্টেম ডিজাইন করার সময় আমি প্রায়শই অন্যান্য মডিউলগুলির দ্বারা একগুচ্ছ মডিউল (লগিং, ডাটাবেস অ্যাকসেস) ব্যবহার করার সমস্যায় পড়ি। প্রশ্নটি হল, আমি কীভাবে এই উপাদানগুলি অন্যান্য উপাদানগুলিতে সরবরাহ করতে যাব। দুটি উত্তর সম্ভবত নির্ভরতা ইনজেকশন বা কারখানার নিদর্শন ব্যবহার করে বলে মনে হচ্ছে। তবে উভয়ই ভুল বলে মনে হচ্ছে:
- কারখানাগুলি একটি বেদনাকে পরীক্ষা করে এবং বাস্তবায়নের পক্ষে সহজেই অদলবদল করতে দেয় না। তারা নির্ভরতাগুলিও আপাত করে না (উদাহরণস্বরূপ আপনি কোনও পদ্ধতি পরীক্ষা করছেন, এটি একটি বিস্মৃত যে এটি কোনও পদ্ধতিকে কল করে এমন একটি পদ্ধতি যা কল করে এমন একটি পদ্ধতি যা একটি ডেটাবেস ব্যবহার করে) calls
- ডিপেন্ডেসি ইনজেকশনটি ব্যাপকভাবে নির্মাণকারীর যুক্তি তালিকার স্ফীত হয় এবং এটি আপনার কোডের সমস্ত দিকগুলিকে ঘ্রাণ দেয়। প্রায় অর্ধশতাধিক শ্রেণীর নির্মাতারা এ জাতীয় দেখায় এমন সাধারণ পরিস্থিতি
(....., LoggingProvider l, DbSessionProvider db, ExceptionFactory d, UserSession sess, Descriptions d)
এখানে একটি সাধারণ পরিস্থিতি নিয়ে আমার সমস্যা আছে: আমার ব্যতিক্রম ক্লাস রয়েছে, যা ব্যবহারকারীর ভাষা সেটিংয়ের প্যারামিটার রয়েছে এমন একটি ক্যোয়ারী ব্যবহার করে ডাটাবেস থেকে লোড হওয়া ত্রুটি বিবরণ ব্যবহার করে, যা ব্যবহারকারী সেশন অবজেক্টে রয়েছে in সুতরাং একটি নতুন ব্যতিক্রম তৈরি করতে আমার একটি বিবরণ প্রয়োজন, যার জন্য একটি ডাটাবেস সেশন এবং ব্যবহারকারীর সেশন প্রয়োজন। সুতরাং আমি এই সমস্ত বস্তুকে আমার সমস্ত পদ্ধতিতে টেনে আনতে ডুম্মড হয়েছি যদি আমার কোনও ব্যতিক্রম ছোঁড়ার প্রয়োজন হয় might
আমি কীভাবে এ জাতীয় সমস্যা মোকাবিলা করব ??