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