আমার বেস দুটি ক্লাস আছে, Operation
এবং Trigger
। প্রত্যেকের বেশ কয়েকটি সাবক্লাস রয়েছে যা নির্দিষ্ট ধরণের অপারেশন বা ট্রিগারগুলিতে বিশেষজ্ঞ। একটি Trigger
একটি নির্দিষ্ট ট্রিগার করতে পারে Operation
। যখন Operation
একটি নির্দিষ্ট দ্বারা ট্রিগার করা যেতে পারে Trigger
।
আমার দেওয়া কোডটি লিখিত হওয়া দরকার যা Operation
একটি প্রদত্ত Trigger
(বা বিপরীতে) প্রদত্ত একটি মানচিত্র তৈরি করে , তবে আমি এটি কোথায় রাখব তা নিশ্চিত নই।
এই ক্ষেত্রে কোডটি স্পষ্টভাবে এক শ্রেণীর বা অন্য শ্রেণীর অন্তর্ভুক্ত নয়। সুতরাং একক-দায়িত্বের নীতির ক্ষেত্রে আমি কোডটি কোথায় থাকতে হবে তা নিশ্চিত নই।
আমি তিনটি বিকল্প দেখতে পাচ্ছি যা সমস্ত কাজ করবে। যদিও 1 এবং 2 কেবল শব্দার্থবিজ্ঞানের পছন্দ হিসাবে উপস্থিত হয়, 3 সম্পূর্ণরূপে একটি পৃথক পদ্ধতির প্রতিনিধিত্ব করে।
- ট্রিগার যেমন উপর
bool Triggers(Operation o)
। - অপারেশন, যেমন
bool TriggeredBy(Trigger t)
। - সম্পূর্ণ নতুন ক্লাসে যা ম্যাপিং পরিচালনা করে, যেমন
bool MappingExists(Trigger t, Operation o)
।
আমি কীভাবে সিদ্ধান্ত নেব যে একক দায়বদ্ধতার নীতি অনুসারে ভাগ করা ম্যাপিং কোডটি কোথায় রাখব?
একক দায়িত্ব পরিচালনা করার সময় কীভাবে পরিচালনা করবেন?
সম্পাদনা 1।
সুতরাং আসল কোডটি এরকম দেখাচ্ছে। সকল সম্পত্তি, হয় একজন string
, Guid
, collection<string>
, অথবা enum
। এগুলি মূলত কেবলমাত্র ছোট ছোট ডেটা উপস্থাপন করে।
সম্পাদনা 2।
বুলের রিটার্ন টাইপের কারণ। অন্য ক্লাস একটি সংগ্রহ Trigger
এবং একটি সংগ্রহ গ্রাস করতে চলেছে Operation
। এটি Trigger
এবং ক এর মধ্যে কোন ম্যাপিং বিদ্যমান তা জানতে হবে Operation
। এটি একটি তথ্য তৈরি করতে সেই তথ্য ব্যবহার করবে।