Prototype Pattern একটি ক্রিয়েশনাল ডিজাইন প্যাটার্ন যা একটি অবজেক্টের নতুন কপি (clone) তৈরি করার জন্য ব্যবহৃত হয়, পরিবর্তে পুনরায় নতুন অবজেক্ট তৈরি করার। এই প্যাটার্নটি মূলত অবজেক্ট কপির জন্য ব্যবহৃত হয় যেখানে একই ধরনের অবজেক্ট বারবার তৈরি করতে হয়। এটি সাধারণত ক্লোনিং এর মাধ্যমে কাজ করে এবং এটি অবজেক্টের এক্সপেনশন বা কাস্টমাইজেশন এর জন্য ব্যবহৃত হয়।
Prototype Pattern এর মূল উদ্দেশ্য হল, যখন একই অবজেক্টের একাধিক কপি তৈরি করা প্রয়োজন, তখন আপনি একটি existing object থেকে ক্লোন তৈরি করতে পারেন, যা সম্পূর্ণ নতুন অবজেক্ট তৈরির চাইতে দ্রুত এবং কার্যকরী।
Prototype Pattern এর বৈশিষ্ট্য:
- ক্লোনিং: এটি একটি অবজেক্টের একটি কপি তৈরি করতে ব্যবহৃত হয়, যার ফলে নতুন অবজেক্ট তৈরি করার সময় প্রয়োজনীয় সময় এবং রিসোর্স কমে যায়।
- কাস্টমাইজেশন: অবজেক্টের কপি তৈরি করার পরে আপনি সেটিকে পরিবর্তন বা কাস্টমাইজ করতে পারেন।
- অপারেশন লোডের উন্নতি: যখন অনেক সংখ্যক একই ধরনের অবজেক্টের প্রয়োজন হয়, তখন এই প্যাটার্ন কার্যকরী হতে পারে।
Prototype Pattern এর ক্লাস ডায়াগ্রাম:
Prototype Pattern এ মূলত দুটি গুরুত্বপূর্ণ উপাদান থাকে:
- Prototype: একটি ইন্টারফেস যা
clone()মেথড সংজ্ঞায়িত করে, যা অবজেক্টের কপি তৈরি করার জন্য ব্যবহৃত হয়। - ConcretePrototype: এটি একটি কনক্রিট ক্লাস যা Prototype ইন্টারফেস ইমপ্লিমেন্ট করে এবং আসল ক্লোনিং লজিক সরবরাহ করে।
Prototype Pattern এর উদাহরণ (Java)
ধরা যাক, আমরা একটি Document অবজেক্ট তৈরি করতে চাই, এবং আমাদের প্রয়োজন একাধিক কপি তৈরি করা সেই একই অবজেক্টের, যাতে Document ক্লাসের মধ্যে কিছু পরিবর্তন করা যায়।
Step 1: Prototype Interface (Cloneable Interface)
public interface Prototype {
Prototype clone(); // ক্লোনিং পদ্ধতি
}
Step 2: Concrete Prototype Class
public class Document implements Prototype {
private String content;
public Document(String content) {
this.content = content;
}
// Getter for content
public String getContent() {
return content;
}
// Setter for content
public void setContent(String content) {
this.content = content;
}
// Implementing the clone method
@Override
public Prototype clone() {
return new Document(this.content); // Create a copy of the Document object
}
public void display() {
System.out.println("Document Content: " + content);
}
}
Step 3: Prototype Test Class
public class PrototypePatternExample {
public static void main(String[] args) {
// Creating an initial document
Document doc1 = new Document("This is a prototype document.");
doc1.display();
// Cloning the document
Document doc2 = (Document) doc1.clone();
doc2.setContent("This is the cloned document with different content.");
doc2.display();
// Original document remains unchanged
doc1.display();
}
}
ব্যাখ্যা:
- Prototype Interface: এখানে আমরা
Prototypeইন্টারফেস তৈরি করেছি, যার একটিclone()মেথড রয়েছে। - ConcretePrototype Class:
Documentক্লাসটিPrototypeইন্টারফেস ইমপ্লিমেন্ট করে এবং clone() মেথডকে Document অবজেক্টের কপি তৈরি করার জন্য বাস্তবায়ন করে। - PrototypePatternExample: এখানে একটি মূল Document অবজেক্ট তৈরি করা হয়েছে এবং তারপর তার একটি কপি তৈরি করা হয়েছে। কপি তৈরি করার পর, কপি এবং মূল অবজেক্টের content আলাদা করা হয়েছে, কিন্তু মূল অবজেক্ট অপরিবর্তিত থাকে।
আউটপুট:
Document Content: This is a prototype document.
Document Content: This is the cloned document with different content.
Document Content: This is a prototype document.
Prototype Pattern এর সুবিধা এবং ব্যবহার
সুবিধা:
- নতুন অবজেক্ট তৈরির প্রয়োজনীয়তা হ্রাস: যখন একই ধরনের অনেক অবজেক্টের প্রয়োজন হয়, তখন ক্লোনিং পদ্ধতি ব্যবহার করলে প্রোগ্রামের কর্মক্ষমতা বাড়ানো যায়, কারণ এতে নতুন অবজেক্ট তৈরির পরিবর্তে ক্লোন করা হয়।
- দ্রুত কপি তৈরি: পুরানো অবজেক্ট থেকে দ্রুত কপি তৈরি করা যায়, যা অনেক সময় এবং রিসোর্স বাঁচায়।
- কাস্টমাইজেশন: আপনি ক্লোন হওয়া অবজেক্টটি আরও কাস্টমাইজ করতে পারেন।
ব্যবহার:
- গেম ডেভেলপমেন্ট: গেমে বিভিন্ন ধরনের অবজেক্ট যেমন শত্রু, প্লেয়ার, অস্ত্র, ইত্যাদি থাকে যা একই রকম কপি তৈরি করে পরিচালনা করা যেতে পারে।
- অফিস সফটওয়্যার: বিভিন্ন ধরনের ডকুমেন্ট বা ফাইলের কপি তৈরি করা।
- গ্রাফিক্স সিস্টেম: একাধিক গ্রাফিক্যাল অবজেক্ট তৈরি করার জন্য, যেখানে ডিফল্ট অবজেক্টের কপি তৈরি করা হয়।
সারাংশ
Prototype Pattern একটি ক্রিয়েশনাল ডিজাইন প্যাটার্ন যা একটি অবজেক্টের ক্লোন (কপি) তৈরি করতে ব্যবহৃত হয়, যাতে একই ধরনের অবজেক্টের একাধিক কপি তৈরি করার প্রয়োজন হলে দ্রুত এবং কার্যকরীভাবে সেই কপি তৈরি করা যায়। এটি ক্লোনিং পদ্ধতির মাধ্যমে কাজ করে এবং Java তে এটি clone() মেথড ব্যবহার করে বাস্তবায়ন করা যায়। Prototype Pattern মূলত সেই সমস্ত পরিস্থিতিতে ব্যবহৃত হয় যেখানে একাধিক সমান অবজেক্ট তৈরি করার প্রয়োজন এবং সেগুলিকে কাস্টমাইজড বা পরিবর্তনশীলভাবে ব্যবহৃত করা হয়।