Factory Pattern হলো এমন একটি ডিজাইন প্যাটার্ন যা অবজেক্ট তৈরির প্রক্রিয়াকে সহজ ও সংগঠিত করে। এটি এমনভাবে কাজ করে যেন আপনি সরাসরি অবজেক্ট তৈরি না করে একটি ফ্যাক্টরি (Factory) বা কারখানার মাধ্যমে প্রয়োজনীয় অবজেক্ট তৈরি করতে পারেন। এটি বিশেষ করে তখন কাজে লাগে, যখন আমাদের বিভিন্ন অবজেক্ট তৈরি করতে হয়, কিন্তু সেই অবজেক্টগুলো তৈরি করার জন্য জটিল লজিক প্রয়োজন হয়।
গল্প দিয়ে ব্যাখ্যা
ধরো, তুমি একটি গাড়ির শোরুমের মালিক, যেখানে বিভিন্ন ধরনের গাড়ি বিক্রি হয় – যেমন: Car, Bike এবং Truck। যখন কোনো গ্রাহক শোরুমে এসে গাড়ি কিনতে চায়, তখন তুমি সরাসরি গ্রাহককে গাড়ির মডেল অনুযায়ী তৈরি করতে না বলে, বরং ফ্যাক্টরি থেকে তৈরি করে এনে দেওয়ার সিদ্ধান্ত নিলে। অর্থাৎ, তুমি শুধু গাড়ির ধরন বলবে, বাকিটা ফ্যাক্টরি ঠিক করে আনবে।
এখন, ফ্যাক্টরি বুঝে নিবে কোন ধরনের গাড়ি বানাতে হবে এবং সঠিক মডেলের গাড়িটি গ্রাহককে সরবরাহ করবে। এর ফলে প্রতিবার নতুন ধরনের গাড়ি চাইলে তুমি সরাসরি ফ্যাক্টরি থেকে সেই মডেলের গাড়িটি পেতে পারো। এই প্রক্রিয়াটাই হলো Factory Pattern যেখানে ফ্যাক্টরি প্রয়োজন অনুসারে অবজেক্ট তৈরি করে দেয়।
বাস্তব উদাহরণ: Python কোডে Factory Pattern
ধরো, তুমি একটি VehicleFactory ক্লাস তৈরি করেছো, যেখানে গ্রাহকের পছন্দ অনুযায়ী ভিন্ন ধরনের যানবাহন (গাড়ি) তৈরি করা হয়।
# প্রথমে ভেহিকল ক্লাস এবং তার সাবক্লাসগুলো তৈরি করি
class Car:
def drive(self):
return "Driving a car!"
class Bike:
def drive(self):
return "Riding a bike!"
class Truck:
def drive(self):
return "Driving a truck!"
# এবার ফ্যাক্টরি ক্লাস তৈরি করি
class VehicleFactory:
@staticmethod
def get_vehicle(vehicle_type):
if vehicle_type == "car":
return Car()
elif vehicle_type == "bike":
return Bike()
elif vehicle_type == "truck":
return Truck()
else:
return None
# ফ্যাক্টরি প্যাটার্ন দিয়ে ভেহিকল তৈরি করা
vehicle = VehicleFactory.get_vehicle("car")
print(vehicle.drive()) # Output: Driving a car!
vehicle = VehicleFactory.get_vehicle("bike")
print(vehicle.drive()) # Output: Riding a bike!
ব্যাখ্যা
- VehicleFactory: এটি একটি ফ্যাক্টরি ক্লাস যা
get_vehicleনামের একটি স্ট্যাটিক মেথডের মাধ্যমে গ্রাহকের চাহিদা অনুযায়ী যানবাহন (গাড়ি, বাইক, ট্রাক) তৈরি করে। - get_vehicle(vehicle_type): এই মেথডটি গ্রাহকের ইনপুট হিসেবে পছন্দের গাড়ির নাম নেয় এবং সেই অনুযায়ী অবজেক্ট তৈরি করে রিটার্ন করে।
Factory Pattern কেন ব্যবহার করবো?
- সহজ অবজেক্ট ম্যানেজমেন্ট: বিভিন্ন অবজেক্ট তৈরি সহজ হয়।
- কোডের পুনরায় ব্যবহারযোগ্যতা: একই ফ্যাক্টরি ক্লাস ব্যবহার করে বিভিন্ন অবজেক্ট তৈরি করা যায়।
- মেইনটেইনেবল: ভবিষ্যতে কোনো নতুন ভেহিকল যুক্ত করলে শুধু ফ্যাক্টরি ক্লাসে নতুন অবজেক্টের ক্লাস যুক্ত করতে হবে, অন্য কোড পরিবর্তনের দরকার হবে না।
Factory Pattern এর মাধ্যমে আমরা বিভিন্ন প্রকারের অবজেক্ট তৈরির কাজ একটি কেন্দ্রীয় স্থানে সংরক্ষণ করতে পারি, যা কোডিংকে সহজ ও সুনির্দিষ্ট করে তোলে।