Android
Modelli di progettazione
Ricerca…
introduzione
I modelli di progettazione sono le migliori pratiche formalizzate che il programmatore può utilizzare per risolvere problemi comuni durante la progettazione di un'applicazione o di un sistema.
I modelli di progettazione possono accelerare il processo di sviluppo fornendo paradigmi di sviluppo collaudati e comprovati.
Riutilizzare i modelli di progettazione aiuta a prevenire problemi sottili che possono causare problemi importanti e migliora anche la leggibilità del codice per i programmatori e gli architetti che hanno familiarità con i modelli.
Esempio di classe Singleton
Java Singleton Pattern
Per implementare il modello Singleton, abbiamo approcci diversi ma tutti seguono concetti comuni.
- Costruttore privato per limitare l'istanza della classe da altre classi.
- Variabile statica privata della stessa classe che è l'unica istanza della classe.
- Metodo statico pubblico che restituisce l'istanza della classe, questo è l'accesso globale
- punta al mondo esterno per ottenere l'istanza della classe Singleton.
/**
* Singleton class.
*/
public final class Singleton {
/**
* Private constructor so nobody can instantiate the class.
*/
private Singleton() {}
/**
* Static to class instance of the class.
*/
private static final Singleton INSTANCE = new Singleton();
/**
* To be called by user to obtain instance of the class.
*
* @return instance of the singleton.
*/
public static Singleton getInstance() {
return INSTANCE;
}
}
Modello di osservatore
Il modello di osservatore è un modello comune, ampiamente utilizzato in molti contesti. Un vero esempio può essere preso da YouTube: quando ti piace un canale e vuoi ricevere tutte le notizie e guardare nuovi video da questo canale, devi iscriverti a quel canale. Quindi, ogni volta che questo canale pubblica notizie, tu (e tutti gli altri abbonati) riceverai una notifica.
Un osservatore avrà due componenti. Uno è un broadcaster (canale) e l'altro è un ricevitore (tu o qualsiasi altro utente). L'emittente gestirà tutte le istanze del destinatario che l'hanno sottoscritta. Quando l'emittente emette un nuovo evento, lo annuncerà a tutte le istanze del destinatario. Quando il destinatario riceve un evento, dovrà reagire a quell'evento, ad esempio attivando YouTube e riproducendo il nuovo video.
Implementare il modello di osservatore
L'emittente deve fornire metodi che consentano ai destinatari di iscriversi e cancellarsi da esso. Quando l'emittente emette un evento, gli abbonati devono essere avvisati che si è verificato un evento:
class Channel{ private List<Subscriber> subscribers; public void subscribe(Subscriber sub) { // Add new subscriber. } public void unsubscribe(Subscriber sub) { // Remove subscriber. } public void newEvent() { // Notification event for all subscribers. } }
Il destinatario deve implementare un metodo che gestisca l'evento dall'emittente:
interface Subscriber { void doSubscribe(Channel channel); void doUnsubscribe(Channel channel); void handleEvent(); // Process the new event. }