ধরণের জিনিস
আমাদের আলোচনার উদ্দেশ্যে, আসুন আমাদের বস্তুগুলিকে তিনটি ভিন্ন ধরণের মধ্যে পৃথক করা যাক:
এগুলি হ'ল কাজগুলি হয়ে ওঠে। তারা একটি চেকিং অ্যাকাউন্ট থেকে অন্যটিতে অর্থ স্থানান্তর করে, অর্ডারগুলি পরিপূরণ করে এবং আমরা ব্যবসায়িক সফ্টওয়্যারটি প্রত্যাশা করি এমন অন্যান্য ক্রিয়াকলাপগুলি ।
ডোমেন লজিক অবজেক্টগুলিতে সাধারণত অ্যাকসেসর (গেটার্স এবং সেটটার) প্রয়োজন হয় না। বরং আপনি কোনও কনস্ট্রাক্টরের মাধ্যমে নির্ভরতা হস্তান্তর করে অবজেক্টটি তৈরি করেন এবং তারপরে পদ্ধতিগুলির মাধ্যমে অবজেক্টটি ম্যানিপুলেট করুন (বলুন, জিজ্ঞাসা করবেন না)।
ডেটা ট্রান্সফার অবজেক্টগুলি খাঁটি অবস্থা; এগুলিতে কোনও ব্যবসায়িক যুক্তি নেই। তাদের সর্বদা অ্যাকসেসর থাকবে। আপনি সেগুলি অপরিবর্তনীয় ফ্যাশনে লিখছেন কি না তার উপর নির্ভর করে তাদের সেটার থাকতে পারে বা নাও থাকতে পারে । আপনি হয় আপনার ক্ষেত্রটি কনস্ট্রাক্টারে সেট করবেন এবং তাদের মানগুলি বস্তুর আজীবন পরিবর্তিত হবে না, বা আপনার অ্যাক্সেসরগুলি পড়তে / লিখতে হবে। অনুশীলনে, এই জিনিসগুলি সাধারণত পরিবর্তনযোগ্য, যাতে কোনও ব্যবহারকারী তাদের সম্পাদনা করতে পারে।
মডেল অবজেক্টগুলিতে প্রদর্শনযোগ্য / সম্পাদনযোগ্য ডেটা উপস্থাপনা থাকে। এগুলিতে ব্যবসায়িক যুক্তি থাকতে পারে যা সাধারণত ডেটা বৈধতার মধ্যে সীমাবদ্ধ থাকে। ভিউ মডেল অবজেক্টের উদাহরণ হ'ল ইনভয়েসভিউমোডেল হতে পারে, এতে গ্রাহক অবজেক্ট, একটি চালান শিরোনামের অবজেক্ট এবং ইনভয়েস লাইন আইটেম থাকে। মডেল অবজেক্টে সর্বদা অ্যাকসেসর থাকে View
সুতরাং একমাত্র ধরণের অবজেক্টটি "খাঁটি" হবে এই অর্থে যে এতে ক্ষেত্রের অ্যাকসেসর নেই তা হবে ডোমেন লজিক অবজেক্ট। এ জাতীয় কোনও বস্তু সিরিয়ালকরণ করা তার বর্তমান "গণনামূলক অবস্থা" সংরক্ষণ করে, যাতে এটি পরে প্রক্রিয়াজাতকরণে পুনরুদ্ধার করা যায়। মডেলগুলি দেখুন এবং ডিটিওগুলি নির্বিঘ্নে সিরিয়ালাইজড করা যেতে পারে তবে অনুশীলনে তাদের ডেটা সাধারণত একটি ডাটাবেসে সংরক্ষণ করা হয়।
ক্রমিকায়ন, নির্ভরতা এবং সংযুক্তকরণ
যদিও এটি সত্য যে সিরিয়ালাইজেশন নির্ভরতা তৈরি করে, এমন কোনও অর্থে যে আপনাকে কোনও সামঞ্জস্যপূর্ণ অবজেক্টের ডিসরিয়ালাইজ করতে হবে, এটি অগত্যা আপনাকে অনুসরণ করতে হবে না যে আপনার সিরিয়ালাইজেশন কনফিগারেশনটি পরিবর্তন করতে হবে। ভাল সিরিয়ালাইজেশন প্রক্রিয়াগুলি সাধারণ উদ্দেশ্য; আপনি কোনও সম্পত্তি বা সদস্যের নাম পরিবর্তন করেন কিনা এগুলি তাদের পাত্তা দেয় না, যতক্ষণ না এটি সদস্যদের কাছে মানচিত্রের মানচিত্র তৈরি করতে পারে। অনুশীলনে, এর একমাত্র অর্থ হল যে সিরিয়ালকরণ উপস্থাপনা (এক্সএমএল, জসন, যাই হোক না কেন) আপনার নতুন বস্তুর সাথে সামঞ্জস্য করার জন্য আপনাকে অবশ্যই অবজেক্টের উদাহরণটি পুনরায় সিরিয়ালাইজ করতে হবে; সিরিয়ালাইজারে কোনও কনফিগারেশন পরিবর্তন প্রয়োজন হবে না।
এটি সত্য যে অবজেক্টগুলিকে কীভাবে সিরিয়াল করা হয় তা নিয়ে উদ্বিগ্ন হওয়া উচিত নয়। আপনি ইতিমধ্যে একটি উপায় বর্ণনা করেছেন যে এই জাতীয় উদ্বেগগুলি ডোমেন ক্লাসগুলি থেকে হ্রাস করা যেতে পারে: প্রতিফলন। সিরিয়ালাইজারটি কীভাবে এটি বস্তুগুলিকে সিরিয়ালাইজ করে এবং ডিজিটালাইজ করে তা নিয়ে উদ্বিগ্ন হওয়া উচিত ; যে, সর্বোপরি, এটি এর ফাংশন। আপনার সিরিয়ালাইজেশন প্রক্রিয়া থেকে আপনি কীভাবে আপনার অবজেক্টগুলিকে ডিকোপলড রাখেন তা হ'ল সিরিয়ালাইজেশনকে একটি সাধারণ-উদ্দেশ্য ফাংশন করা, সমস্ত বস্তুর ধরণের ক্ষেত্রে কাজ করতে সক্ষম।
লোকেরা যে বিষয়গুলিতে বিভ্রান্ত হয় সেগুলির মধ্যে একটি হ'ল উভয় দিকেই ডিকপলিংয়ের ঘটনা ঘটে। এটা না; এটি শুধুমাত্র এক দিকে কাজ করতে হবে। অনুশীলনে, আপনি কখনই পুরোপুরি ডিকোপল করতে পারবেন না; সবসময় কিছু মিলিত হয়। আলগা সংযোগের লক্ষ্য কোড রক্ষণাবেক্ষণকে সহজ করে তোলা, সমস্ত নির্ভরতা অপসারণ না করা।