1. پروٹو ٹائپ پیٹرن کیا ہے
سافٹ ویئر ڈویلپمنٹ میں، پروٹو ٹائپ پیٹرن ایک تخلیقی ڈیزائن پیٹرن ہے جو بغیر نئے آپریٹر کے استعمال کیے موجودہ اشیاء کی نقل کرکے نئے اشیاء بنانے کی اجازت دیتا ہے۔ یہ ترکیب اشیاء کے درمیان کلون تعلق کا استعمال کرتی ہے تاکہ اشیاء کی تخلیق اور استعمال کو الگ کرتی ہے۔
2. پروٹو ٹائپ پیٹرن کی خصوصیات اور فوائد
- خصوصیات:
- اشیاء کو وقت سے پیش نظر اشیاء کو تخلیق ہونے کی اجازت دیتا ہے۔
- اشیاء کی تخلیق کے لئے وقت کو کم کرتا ہے اور نظام کی کارکردگی میں بہتری لاتا ہے۔
- اشیاء کی تخلیق اور استعمال کو الگ کرتا ہے، جس سے مدیریت اور توسیع آسان ہو جاتی ہے۔
- فوائد:
- اشیاء کی تخلیق کی کارکردگی میں بہتری لاتا ہے۔
- اشیاء کی تخلیق کے عمل کو آسان بناتا ہے۔
- اشیاء کو دینامیک طور پر زیادہ یا کم کرنے کی اجازت ہوتی ہے۔
3. Golang میں پروٹو ٹائپ پیٹرن کے اطلاق کے مواقع
پروٹو ٹائپ پیٹرن مندرجہ ذیل مواقع کے لئے مناسب ہے:
- جب اشیاء کی تخلیق پیچیدہ ہوتی ہے، لیکن موجودہ اشیاء کی نقل کرکے اشیاء کو تخلیق کرنا زیادہ کارآمد ہوتا ہے۔
- جب ضرورت ہوتی ہے کہ دینامیک طور پر اشیاء کو تخلیق یا نقل کیا جائے، بجائے کہ سیدھے نئے اشیاء کی نمونہ داری کی جائے۔
4. Golang میں پروٹو ٹائپ پیٹرن کا نفاذ
4.1. UML کلاس نمونہ
4.2. نفاذ مرحلہ 1: ایک پروٹو ٹائپ انٹرفیس تخلیق کریں
پہلے، ایک پروٹو ٹائپ انٹرفیس تخلیق کریں جو کلون میتھڈ کا تعریف کرتا ہے۔
type Prototype interface {
clone() Prototype
}
4.3. نفاذ مرحلہ 2: پروٹو ٹائپ انٹرفیس کا استعمال کرکے اشیاء کی تخلیق اور کلون
4.3.1. ایک پروٹو ٹائپ منیجر کلاس تخلیق کریں
پروٹو ٹائپ منیجر کلاس کا ذمہ دار پروٹو ٹائپ اشیاء کی تخلیق اور ان کی مدیریت ہے۔
type PrototypeManager struct {
prototypes map[string]Prototype
}
func NewPrototypeManager() *PrototypeManager {
return &PrototypeManager{
prototypes: make(map[string]Prototype),
}
}
func (pm *PrototypeManager) Register(name string, prototype Prototype) {
pm.prototypes[name] = prototype
}
func (pm *PrototypeManager) Unregister(name string) {
delete(pm.prototypes, name)
}
func (pm *PrototypeManager) Clone(name string) Prototype {
prototype, ok := pm.prototypes[name]
if ok {
return prototype.clone()
}
return nil
}
4.3.2. پروٹو ٹائپ منیجر کلاس کا استعمال کرکے اشیاء کی تخلیق اور کلون
type Product struct {
name string
}
func (p *Product) clone() Prototype {
return &Product{
name: p.name,
}
}
func main() {
manager := NewPrototypeManager()
// پروٹو ٹائپ منیجر کلاس میں پروٹو ٹائپ اشیاء کو رجسٹر کریں
manager.Register("productA", &Product{name: "Product A"})
// پروٹو ٹائپ منیجر کلاس کا استعمال کرکے اشیاء کی تخلیق اور کلون
productA := manager.Clone("productA").(*Product)
fmt.Println(productA.name) // Output: Product A
}
4.4. نفاذ مرحلہ 3: پروٹو ٹائپ پیٹرن کا استعمال کرنے کے مدنظلآر اور بہتری کے طریقے
پروٹو ٹائپ پیٹرن کا استعمال کرتے وقت درج ذیل نکتوں پر توجہ دینی چاہئے:
- پروٹو ٹائپ پیٹرن اشیاء کی تخلیق کی لاگت زیادہ ہونے کی صورت میں مناسب ہے، کیونکہ اشیاء کو کلون کرنے سے تخلیق کا وقت بچایا جا سکتا ہے۔
- یہ دھیان رکھیں کہ اشیاء کے کلون میتھڈ کی تنفیذ کو یقینی بنانے کے لئے کہیں۔