Dispatching
تا حالا دیدی تو یه مرکز تماس، اپراتور تماس رو وصل میکنه به بخش مناسب؟ مثلاً مشکل فنی داری میری پشتیبانی، پولی باشه میری حسابداری؟ خب اون کاری که اپراتوره میکنه رو بهش میگن Dispatch
توی برنامهنویسی هم همینه:
یه درخواست میاد، سیستم نگاه میکنه، میفرستدش به جای درست
یه مثال ساده با GO
switch contactType {
case "technical":
technicalSupport()
case "accounting":
accounting()
case "sales":
sales()
}
بسته به اینکه contactType چیه، میفرستیمش به تابع مناسب.
انواع Dispatch تو Go
1. Dynamic Dispatch با اینترفیس:
تو زمان اجرا تصمیم میگیریم کدوم متد رو صدا بزنیم:
var s Speaker
s = Dog{} // Woof!
s = Cat{} // Meow!
2. Dispatch از طریق کانالها:
با select منتظریم ببینیم کدوم کانال زودتر پیام میده:
select {
case msg := <-ch1:
fmt.Println(msg)
case msg := <-ch2:
fmt.Println(msg)
}
3. Static Dispatch با Map یا Switch:
actions := map[string]func(){
"start": func() { fmt.Println("Starting...") },
}
چرا Dispatch
- نظم میده به کد.
- قابل گسترشه.
- بهینهتر میشه.
#Golang #Dispatching
@codebyme
تا حالا دیدی تو یه مرکز تماس، اپراتور تماس رو وصل میکنه به بخش مناسب؟ مثلاً مشکل فنی داری میری پشتیبانی، پولی باشه میری حسابداری؟ خب اون کاری که اپراتوره میکنه رو بهش میگن Dispatch
توی برنامهنویسی هم همینه:
یه درخواست میاد، سیستم نگاه میکنه، میفرستدش به جای درست
یه مثال ساده با GO
switch contactType {
case "technical":
technicalSupport()
case "accounting":
accounting()
case "sales":
sales()
}
بسته به اینکه contactType چیه، میفرستیمش به تابع مناسب.
انواع Dispatch تو Go
1. Dynamic Dispatch با اینترفیس:
تو زمان اجرا تصمیم میگیریم کدوم متد رو صدا بزنیم:
var s Speaker
s = Dog{} // Woof!
s = Cat{} // Meow!
2. Dispatch از طریق کانالها:
با select منتظریم ببینیم کدوم کانال زودتر پیام میده:
select {
case msg := <-ch1:
fmt.Println(msg)
case msg := <-ch2:
fmt.Println(msg)
}
3. Static Dispatch با Map یا Switch:
actions := map[string]func(){
"start": func() { fmt.Println("Starting...") },
}
چرا Dispatch
- نظم میده به کد.
- قابل گسترشه.
- بهینهتر میشه.
#Golang #Dispatching
@codebyme