সমস্যা
আমি সম্প্রতি সিলেটলেটগুলি খারাপ হওয়া এবং নির্ভরতা ইনজেকশন (যা "ইন্টারফেস ব্যবহার করে" হিসাবে আমি বুঝতে পারি) সম্পর্কে আরও ভাল পড়েছি। আমি যখন কলব্যাকস / ইন্টারফেস / ডিআই এর সাথে এর অংশটি প্রয়োগ করেছি এবং ইন্টারফেস পৃথককরণের নীতিটি মেনে চলি, তখন আমি বেশ গোলমাল শুরু করি।
কোনও ইউআই প্যারেন্টের নির্ভরতা যেখানে মূলত এটির সমস্ত শিশুদের একত্রিত হয়, সুতরাং একটি ইউআই উপাদান যত বেশি স্তরক্রম হয়, তত বেশি প্রস্ফুটিত হয় তার নির্মাতা।
ইউআই হায়ারার্কির শীর্ষে সমস্ত উপায় ছিল একটি অ্যাপ্লিকেশন ক্লাস, বর্তমান নির্বাচনের তথ্য এবং একটি 3 ডি মডেলের রেফারেন্স রয়েছে যা পরিবর্তনগুলি প্রতিফলিত করতে পারে। অ্যাপ্লিকেশন ক্লাসটি 8 টি ইন্টারফেস বাস্তবায়ন করছিল, এবং এটি কেবলমাত্র পণ্যগুলির (/ ইন্টারফেস) পঞ্চম অংশের চারদিকে ছিল!
আমি বর্তমানে একটি সিঙ্গলটনের সাথে বর্তমান নির্বাচনকে ধরে রাখে এবং ইউআই উপাদানগুলি তাদের আপডেট করার জন্য একটি ফাংশন রাখে। এই ফাংশনটি ইউআই গাছ এবং ইউআই উপাদানগুলি হ্রাস করে তারপরে প্রয়োজনীয় নির্বাচনের সিঙ্গেলটন অ্যাক্সেস করে। কোডটি আমার কাছে এইভাবে পরিষ্কার মনে হচ্ছে।
প্রশ্ন
এই প্রকল্পের জন্য একটি সিঙ্গলটন সম্ভবত উপযুক্ত?
যদি তা না হয় তবে আমার চিন্তাভাবনা এবং / অথবা ডিআই এর বাস্তবায়নের কোনও মৌলিক ত্রুটি আছে যা এটিকে এত জটিল করে তুলেছে?
প্রকল্প সম্পর্কে অতিরিক্ত তথ্য
প্রকার: ঘণ্টা এবং হুইসেল সহ অ্যাপার্টমেন্টগুলির জন্য শপিংয়ের ঝুড়ি
আকার: কোড এবং ইউআইয়ের জন্য 2 ম্যান-মাস
রক্ষণাবেক্ষণ: কোনও চলমান আপডেট নেই, তবে সম্ভবত "সংস্করণ 2.0" পরে
পরিবেশ: ইউনিটিতে সি # ব্যবহার করছে, যা সত্তা ব্যবহার করে উপাদান সিস্টেম
প্রায় সব ক্ষেত্রেই, ব্যবহারকারীর ইন্টারঅ্যাকশন বেশ কয়েকটি ক্রিয়াকে ট্রিগার করে। উদাহরণস্বরূপ, যখন ব্যবহারকারী কোনও আইটেম নির্বাচন করেন
- UI অংশটি সেই আইটেমটি দেখায় এবং এর বিবরণটি আপডেট করা দরকার। এর জন্য, মূল্য গণনা করার জন্য 3 ডি মডেল থেকেও কিছু তথ্য নেওয়া দরকার।
- ইউআই আরও বাড়িয়ে তুললে সামগ্রিক মোট দাম আপডেট করা দরকার
- 3 ডি মডেলের একটি ক্লাসে সম্পর্কিত ফাংশনটি সেখানে পরিবর্তনগুলি প্রদর্শন করার জন্য কল করা প্রয়োজন