Diciamo che ho una classe JavaScript che prende un sacco di impostazioni nel costruttore e quindi ha solo un metodo che l'utente della classe potrebbe voler chiamare più volte. Ecco un esempio:
class Doer {
constructor(settings) {
this._settings = settings;
}
function doIt(params) {
//Return something based on this._settings and params.
}
}
let myDoer = new Doer(mySettings);
myDoer.doIt(params);
Un approccio alternativo sarebbe utilizzare una chiusura:
function createDoer(settings) {
return function doIt(params) {
// Return something based on settings and params.
}
}
let myDoer = createDoer(mySettings);
myDoer(myParams);
Quali sono i pro e i contro di questi due diversi modi di farlo? Quando dovrei usare una classe e quando dovrei usare una chiusura?
Da un lato, usare una classe sembra affidarsi eccessivamente a OOP quando è sufficiente un semplice concetto funzionale. Ma d'altra parte, la classe è più estensibile nel caso in cui le esigenze del progetto cambino.