আমার একক উদ্দেশ্য ফাংশনের একটি সেট রয়েছে যা আমার দুটি পৃথক নিয়ামক প্রয়োজন in এই মুহূর্তে আমার কাছে কেবল সদৃশ কোড রয়েছে এবং আমি এটি থেকে মুক্তি পেতে চাই। এই কোডটি নিয়ামকের অংশ এবং এটি আমার পরিষেবা স্তরের সাথে সম্পর্কিত নয়। কোথায় রাখবে?
আমার একক উদ্দেশ্য ফাংশনের একটি সেট রয়েছে যা আমার দুটি পৃথক নিয়ামক প্রয়োজন in এই মুহূর্তে আমার কাছে কেবল সদৃশ কোড রয়েছে এবং আমি এটি থেকে মুক্তি পেতে চাই। এই কোডটি নিয়ামকের অংশ এবং এটি আমার পরিষেবা স্তরের সাথে সম্পর্কিত নয়। কোথায় রাখবে?
উত্তর:
আপনি কোন ধরনের যুক্তিটি ভাগ করে নিচ্ছেন তা আপনি বলেননি। সংক্ষেপে, এই নিয়ামক যুক্তি বা একটি সহায়ক ফাংশন? কোনও অবজেক্ট ওরিয়েন্টেড ভাষায় এটি মোকাবেলার দুটি পদ্ধতি হ'ল উত্তরাধিকার এবং রচনা। দু'টি নিয়ন্ত্রকের মধ্যে ভাগ করে নেওয়া অ্যাকশন থাকলে উত্তরাধিকার সূচিত হয়। রচনা বাকি সময়টিকে বোঝায়। উত্তরাধিকার ব্যবহারের উদাহরণটি ডিভাইডারের নীচে আমার মূল উত্তরে lies
আপনার কাঠামোর উপর নির্ভর করে কোনও ইউটিলিটি ক্লাস বা সহায়ক শ্রেণি রাখা অস্বাভাবিক নয়। উদাহরণস্বরূপ, জাভা এবং সি # ওয়েব ফ্রেমওয়ার্কগুলিতে আপনার ইউটিলিটিগুলির জন্য প্যাকেজ / নেমস্পেস থাকতে পারে। রুবেলে অন রেলগুলিতে, আপনি সম্ভবত ক্লাসটির সুবিধা নিয়ে যাচ্ছেন Helper
যা নিয়ামক এবং দর্শনগুলির মধ্যে যুক্তি ভাগ করে দেয়। মূলত, এটি দেখতে এটির মতো হবে:
// NOTE: group similar functions
static class LoginUtility
{
static bool IsLoggedIn(Request request) { /* ... */ }
}
বিকল্পভাবে, আপনি এটি ইনস্ট্যান্টিয়েট করে এমন একটি শ্রেণি তৈরি করতে পারেন। উপরের স্ট্যাটিক ক্লাস প্যাটার্নের মূলটি হ'ল আপনার ফাংশনগুলিকে খাঁটি ফাংশন করা। অন্য কথায়, আপনি যে কোনও কাজেই এটি পাস করার দরকার রয়েছে এমন কোনও অবস্থাতেই পাস করেন এবং ফাংশনটি সিস্টেমের কোনও স্থিতিশীল অবস্থার উল্লেখ করে না।
উভয় ক্ষেত্রেই, আপনি নিজের কন্ট্রোলারগুলির প্রতিটিতে এটির মতো প্রবেশ করতে পারবেন:
void MyAction()
{
if (LoginUtiltiy.IsLoggedIn(Request))
{
// Do something ...
}
}
আসল উত্তর
আপনার প্ল্যাটফর্মটি কী ছিল তা আপনি বলেননি, কারণ এটি উত্তরে প্রভাব ফেলতে পারে। এটি একটি অবজেক্ট ওরিয়েন্টেড ল্যাঙ্গুয়েজ বলে ধরে নিলে , সবচেয়ে সাধারণ পন্থাটি এমন একটি বেস ক্লাস তৈরি করা হয় যা উভয় নিয়ামকই প্রসারিত করে। উদাহরণস্বরূপ, রুবি অন রেলে আপনার থাকতে পারে:
class BaseController < ApplicationController
def my_special_function
# ...
end
end
class Controller1 < BaseController
# ...
end
class Controller2 < BaseController
# ...
end
আপনি ধারণাটি অন্য ভাষায়ও অনুবাদ করতে পারেন। একই দৃষ্টিভঙ্গি এএসপি.নেট এমভিসি, অ্যাপাচি উইকেট, গ্রিলস বা অন্য কোনও অবজেক্ট ওরিয়েন্টেড ওয়েব কাঠামোর জন্য কাজ করবে। যদি আপনার ভাষা অবজেক্ট ওরিয়েন্টেড না হয়, তবে ফ্রেমওয়ার্কটি কীভাবে সেরা পদ্ধতির জন্য ডিজাইন করা হয়েছে তা নির্ভর করে ।