Ho trovato il seguente design per le mie esigenze e voglio sapere se c'è un modo migliore per farlo o se hai qualche feedback sul design.
Requisiti
Supponiamo che un'app fornisca componenti aggiuntivi diversi e che ognuno di questi componenti aggiuntivi abbia una licenza. All'utente viene fornita una chiave di licenza e può attivare / disattivare la chiave di licenza per utilizzare tale componente aggiuntivo.
Esiste anche una licenza bundle che fornisce all'utente una singola chiave di licenza che può essere utilizzata per attivare / disattivare tutti i componenti aggiuntivi. Ma nell'app può esserci solo una licenza di bundle.
Questo sarà implementato in PHP.
design
Questo è il design che ho trovato.
class BaseLicense {
protected $license_key;
protected $addon_name;
public abstract activate();
public abstract deactivate();
public abstract is_active();
}
class License extends BaseLicense {
// Inherit abstract methods
}
class BundleLicense extends BaseLicense {
// Inherit abstract methods
// Singleton since there can be only one bundle license.
}