হেড ফার্স্ট ডিজাইন প্যাটার্নসের হাঁসের উদাহরণ হিসাবে দেখানো প্রসঙ্গের উত্তরাধিকার, কৌশল বিন্যাসের সাথে অপ্রাসঙ্গিক?


10

ইন হেড প্রথম নকশা নিদর্শন এটা শেখায় কৌশল প্যাটার্ন একটি হাঁসের উদাহরণ যেখানে হাঁসের বিভিন্ন উপশ্রেণী রানটাইম একটি নির্দিষ্ট আচরণ নির্ধারিত করা যেতে পারে ব্যবহার করে। আমার উপলব্ধি থেকে কৌশল প্যাটার্নের উদ্দেশ্য হ'ল রানটাইমের সময় কোনও একক জিনিসের আচরণ পরিবর্তন করা , তবুও তারা বিভিন্ন ধরণের হাঁসের আচরণ পরিবর্তন করতে হাঁসের উত্তরাধিকার ব্যবহার করছে।

কৌশল প্যাটার্ন

সংশ্লিষ্টতা?

হাঁসের প্রসঙ্গগত উত্তরাধিকার কৌশল প্যাটার্নের সাথে কি অপ্রাসঙ্গিক বা হাঁসের ধরণের পরিবর্তিত হয় এবং কৌশলগুলির প্যাটার্নটি কাজে লাগানোর জন্য তাদের আচরণের বিভিন্নতাও ভাল কারণ? পরিস্থিতি যেখানে আপনার উভয় পরিবর্তিত প্রয়োজন কৌশল কৌশল ব্যবহারের জন্য একটি ভাল কারণ গঠন করে? তারা কৌশল কৌশলটির উদাহরণ হিসাবে কেন এটিকে অন্তর্ভুক্ত করবে?

একটি সহজ উদাহরণ

আমি কি কেবল হাঁসের ক্লাস (কোনও উত্পন্ন ক্লাস নেই) করে এই উদাহরণটি আরও সহজ করতে পারি? তারপরে যখন কোনও হাঁসের বস্তুটি কার্যকর করা হয় তখন নির্দিষ্ট পরিস্থিতির উপর ভিত্তি করে এটি বিভিন্ন আচরণ নির্ধারণ করা যেতে পারে যা তার নিজস্ব বস্তুর ধরণের উপর নির্ভর করে না। উদাহরণস্বরূপ: আবহাওয়ার উপর ভিত্তি করে ফ্লাই বিহেভিয়ার পরিবর্তন বা দিনের সময় এবং হাঁস কতটা ক্ষুধার্তের উপর ভিত্তি করে কোয়াকবিহার আচরণ পরিবর্তন করে। আমি বুঝতে পারি যে এটি বইয়ের একটি থেকে আলাদা সমস্যার সমাধান করবে, তবে আমি যা খুঁজছি তা কোনও প্রাসঙ্গিক কৌশল প্যাটার্নের উদাহরণ যা পিছনে পড়ে।

উপরের আমার উদাহরণটি কৌশল কৌশলটিও গঠন করবে?

সম্পাদনা:

আমি 2 টি সহজ কৌশল প্যাটার্নের উদাহরণ খুঁজে পেতে সফল হয়েছি যে প্রসঙ্গের উত্তরাধিকার ছাড়াই কেবল কৌশল বিন্যাস হিসাবে আরও কঠোরভাবে মেনে চলে: হান্টার.জভা এবং সলভার.পি

উত্তর:


7

হ্যাঁ, আমি মনে করি আপনি সঠিক পথে আছেন। কৌশল প্যাটার্ন ব্যবহার করে শ্রেণিটি একটি সাবক্লাস হতে হবে না। কোড পুনরায় ব্যবহারের জন্য কৌশল প্যাটার্ন উত্তরাধিকারের বিকল্প । এটি উত্তরাধিকার বনাম রচনাটির এমনকি আরও বিস্তৃত তুলনায় ফিরে আসে।

ডিজাইন প্যাটার্নগুলি থেকে : পুনরায় ব্যবহারযোগ্য ওওপি এর উপাদানগুলি আপনি কৌশল বিন্যাসটি ব্যবহার করবেন

  • সাবক্লাসের বিস্ফোরণ এড়িয়ে চলুন (আচরণের সংমিশ্রণের কারণে)
  • আপনার রান-টাইমে আচরণের পরিবর্তন করতে হবে

যদি আপনি কোয়াক এবং ফ্লাই আচরণগুলি বাস্তবায়নের জন্য উত্তরাধিকার ব্যবহার করেন তবে আচরণের সমস্ত সংমিশ্রণের প্রতিনিধিত্ব করতে আপনি এই সমস্ত সাবক্লাসের সাথে ফলাফল পাবেন।

  • FlyableQuackableDuck
  • FlyableSqeakableDuck
  • FlyableMuteDuck
  • NoFlyQuackableDuck
  • NoFlySqueakableDuck
  • NoFlyMuteDuck

এতগুলি সাবক্লাস থাকা রক্ষণাবেক্ষণ করা আরও শক্ত করে তোলে যে কারণে কৌশলটি প্যাটার্ন এই ক্ষেত্রে অনুকূল ored আপনার কেবলমাত্র দুটি বৈশিষ্ট্য দরকার যা ফ্লাইবিলিটি এবং কোয়াকিবিলিটিকে সজ্জিত করে এবং আপনি নতুন ক্লাস তৈরি না করে এগুলি মেশাতে এবং মেলাতে পারেন।

আপনি ইতিমধ্যে রান-টাইম সুবিধার কথাও উল্লেখ করেছেন যদি আবহাওয়া বদলে হাঁসের ফ্লাই সম্পত্তি শর্তের কারণে কোনও NoFly অবজেক্টের সাথে প্রতিস্থাপন করা যায়।

এটি যখন সম্ভব হবে উত্তরাধিকারের তুলনায় রচনার পক্ষে পরামর্শের সাথে সামঞ্জস্যপূর্ণ।


1

আমি কি কেবল হাঁসের ক্লাস (কোনও উত্পন্ন ক্লাস নেই) করে এই উদাহরণটি আরও সহজ করতে পারি? তারপরে যখন কোনও হাঁসের বস্তুটি কার্যকর করা হয় তখন নির্দিষ্ট পরিস্থিতির উপর ভিত্তি করে এটি বিভিন্ন আচরণ নির্ধারণ করা যেতে পারে যা তার নিজস্ব বস্তুর ধরণের উপর নির্ভর করে না।

নিশ্চয়ই. অনুপ্রেরণার জন্য হেড ফার্স্ট অবজেক্ট-ওরিয়েন্টেড অ্যানালাইসিস এবং ডিজাইনের দিকে একবার নজর দিন । সেখানে একটি "রিক্স গিটারস" রয়েছে (বাদ্যযন্ত্র) উপকরণের উপ-শ্রেণীর বিস্ফোরণ দেখায় । এই সমস্ত প্রতিকারের জন্য পরিবর্তিত আচরণের একটি "স্পেসিফিকেশন" শ্রেণিতে আবৃত হয়, যা পরিবর্তিত হয় তার নীতিটি পর্যবেক্ষণ করে ।

বিমূর্ত কারখানা - প্রসঙ্গ ভিত্তিক নির্মাণ

এই নিদর্শন এখানে । বিটিডাব্লু, নোট করুন যে এটি কৌশল নিজেই ব্যবহার করে।

ধারণার উপর ফোকাস করা, বাস্তবায়ন নয় ... আপনার একটি "ওয়েদারফ্যাক্টরি" থাকতে পারে যা রৌদ্র বা বর্ষার ইত্যাদির উপর নির্ভর করে স্পেসিফিকেশন অবজেক্ট তৈরি করে।

সেই "NoFlyInFogQuackableMallard" জিনিসপত্র তৈরি করতে আপনার কাছে "কারখানার কারখানাগুলি" থাকতে পারে। এবং প্রকৃতপক্ষে, এটি বিমূর্ত কারখানার প্যাটার্নটি সম্পর্কে। তাই সম্ভবত হাঁসের ধরণের নির্দিষ্ট হাঁস-ধরণের তৈরি করার জন্য একটি ড্যাকফ্যাক্টরি, তারপরে এটি একটি হাঁস-ধরণের নির্দিষ্ট কুয়াশাচ্ছন্ন আবহাওয়া আচরণ করার জন্য একটি ওয়েদারফ্যাক্টরি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.