Le fabbriche sono usate per creare oggetti. Mi chiedevo se fosse contro lo scopo di una fabbrica, se legassi insieme un paio di oggetti in fabbrica. Lasciatemi illustrare questo con un esempio.
Diciamo che ho una fabbrica che produce finestre di dialogo modali. La fabbrica può creare un'istanza di una vista, che verrà visualizzata sullo schermo. Inoltre ho bisogno di alcuni pulsanti per essere presente sulla vista e che dovrebbero fornire alcune funzionalità, diciamo chiamiamo un servizio tramite qualche delega.
A seconda del tipo di finestra di dialogo modale, desidero essere in grado di fornire pulsanti e comportamenti diversi.
class ModalFactory {
static func createWeatherModal() -> ModalWindowProtocol {
let modal = SomeModal()
let closeButton = CloseButton()
let verifyWeatherButton = WeatherButton()
modal.addButton(verifyWeatherButton)
modal.addButton(closeButton)
let service = RemoteApi()
verifyWeatherButton.performAction {
service.calculateWeatherConditions()
}
closeButton.performAction {
modalal.dismiss()
}
}
static func createAdvancedWeatherModal() -> ModalWindowProtocol {
let modal = AdvancedWeatherModal()
let service = AdvancedWeatherService()
let weatherButton = WeatherButton()
let closeButton = CloseButton()
modal.addButton(weatherButton)
modal.addButton(closeButton)
weatherButton.performAction {
service.getAdvancedWeatherInfo()
}
closeButton.performAction {
modal.dismiss()
}
}
}
Quindi, ce l'hai. Il binding di un evento tap avviene in fabbrica. È una buona pratica? E se no, cosa suggeriresti per questo tipo di creazione e associazione dinamica modale?
Grazie