mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 14:31:28 +00:00
46 lines
1.8 KiB
Go
46 lines
1.8 KiB
Go
package services
|
|
|
|
import (
|
|
"github.com/emilybache/gildedrose-refactoring-kata/domains"
|
|
"github.com/emilybache/gildedrose-refactoring-kata/lib"
|
|
"github.com/emilybache/gildedrose-refactoring-kata/models"
|
|
)
|
|
|
|
type ItemUpdateServiceProvider struct {
|
|
logger lib.Logger
|
|
normalItemUpdateService NormalItemUpdateService
|
|
agedBrieItemUpdateService AgedBrieItemUpdateService
|
|
backstagePassItemUpdateService BackstagePassItemUpdateService
|
|
sulfurasItemUpdateService SulfurasItemUpdateService
|
|
}
|
|
|
|
func NewItemUpdateServiceProvider(
|
|
logger lib.Logger,
|
|
normalItemUpdateService NormalItemUpdateService,
|
|
agedBrieItemUpdateService AgedBrieItemUpdateService,
|
|
backstagePassItemUpdateService BackstagePassItemUpdateService,
|
|
sulfurasItemUpdateService SulfurasItemUpdateService,
|
|
) domains.ItemUpdateServiceProvider {
|
|
|
|
return ItemUpdateServiceProvider{
|
|
logger: logger,
|
|
normalItemUpdateService: normalItemUpdateService,
|
|
agedBrieItemUpdateService: agedBrieItemUpdateService,
|
|
backstagePassItemUpdateService: backstagePassItemUpdateService,
|
|
sulfurasItemUpdateService: sulfurasItemUpdateService,
|
|
}
|
|
}
|
|
|
|
func (this ItemUpdateServiceProvider) GetUpdateService(item *models.Item) domains.ItemUpdateService {
|
|
switch item.Model.Name {
|
|
case "Aged Brie":
|
|
return this.agedBrieItemUpdateService
|
|
case "Backstage passes to a TAFKAL80ETC concert":
|
|
return this.backstagePassItemUpdateService
|
|
case "Sulfuras, Hand of Ragnaros":
|
|
return this.sulfurasItemUpdateService
|
|
default:
|
|
return this.normalItemUpdateService
|
|
}
|
|
}
|