Factory
یه الگوی طراحی برای ساختن آبجکتها بدون اینکه خودت مستقیم new بزنی و دقیقاً بدونی کدوم کلاس ساخته میشه.
یعنی ساختنِ آبجکت outsource میشه به یه “کارخونه”.
تو فقط میگی: «داداش یه چیزی از این نوع بهم بده»، خودش تشخیص میده کدوم کلاس باید ساخته بشه.
```
func NewProvider(providerType string) (Provider, error) {
switch providerType {
case "zarinpal":
return &Zarinpal{}, nil
case "stripe":
return &Stripe{}, nil
case "crypto":
return &Crypto{}, nil
default:
return nil, fmt.Errorf("unknown payment provider: %s", providerType)
}
}