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