Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Greenpeace
Java Design Pattern: usare il pattern Strategy (3/3)
Scritto da Serenella Sisca il 21-03-2008 ore 09:19
Intel Parallel Studio XE
Per semplicità, e anche per evidente similarità di contenuti, riportiamo solo la strategia “diagramma lineare”, che estenderà la classe astratta PlotStrategy:
  1. <span style="font-size:1.0em">public class LinePlotStrategy extends PlotStrategy{
  2. LinePlotPanel lp;
  3. public LinePlotStrategy()
  4. {
  5. super("Line plot");
  6. lp = new LinePlotPanel();
  7. getContentPane().add(lp);
  8. }
  9.  
  10. //viene sovrascritto il metodo <i>plot</i> della superclasse
  11.  
  12. public void plot(float[] xp, float[] yp){
  13. x = xp; y = yp; 
  14. findBounds();
  15. setSize(width, height);
  16. setVisible(true);
  17. setBackground(Color.white);
  18. lp.setBounds(minX, minY, maxX, maxY);
  19. lp.plot(xp, yp, color); 
  20. repaint(); 
  21.  }
  22. }</span>


Sia la classe PlotPanel, che estende JPanel, che le classi LinePlotPanel e BarPlotPanel, che ereditano da PlotPanel metodi per ridurre in scala i dati ricevuti, hanno una valenza puramente grafica e tutt’e tre possono essere facilmente implementate da chi legge. Quello che ci interessa è come il pattern Strategy abbia aggiunto un livello di astrazione e reso il nostro codice più mantenibile e riusabile. Il Context (il comportamento) diventa un parametro utilizzato nel costruttore di una classe, che richiederà l’utilizzo di una strategia. L’oggetto Context avrà sempre un riferimento alla classe astratta Strategy, ma utilizzerà dinamicamente una ConcreteStrategy precisa, il tutto senza ricorrere a statement condizionali, che nel caso di molte strategie appesantirebbero il codice.

E se volessimo aggiungere un altro modo per plottare i nostri dati, per esempio usando un diagramma a striscia? Basterebbe aggiungere una classe concreta, che estenda PlotStrategy e, nel nostro caso, creare un JButton che comunichi la richiesta al Context, aggiungendo nella classe Context un metodo in grado di accogliere la richiesta.
Precedente: Reti neurali quantiche (2/2)
Successiva: Le nuove feature di EJB 3.1 (2/3)
Copyright Programmazione.it™ 1999-2013. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.281 secondi.