Conosciamo il modello di design Decorator , ma come si comporterebbe l'implementazione di l'esclusione reciproca decoratori?
Diciamo che ho uno schema decoratore per implementare i modificatori di armi in un gioco. I decoratori sarebbero, ad esempio, "velenosi", "incantati dal fuoco", "incantati dal ghiaccio", ecc. Ora diciamo che non voglio che la mia arma sia incendiata e incantata dal ghiaccio (solo perché), come andrei a implementare quella logica nel mio schema decoratore?
Avrei bisogno di scomporlo o di sovvertirlo oltre il riconoscimento?
La mia migliore idea ora è di avere un metodo GetDecorations()
sulla mia interfaccia e usarlo nella nuova classe decoratore per garantire che la nuova decorazione non violi alcuna restrizione. Ma questo sembra andare contro il principio Decoratore di "non sapere" che puoi essere decorato ...