|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
[JAVA/Swing] Registro di componenti. Idea buona o cattiva?
A volte serve fare un update di un componente di cui non si ha
la referenza. Passare referenze in giro porta imho a un groviglio orribile di dipendenze, quindi come fare? Ho pensato a una classe singleton che mantiene un registro di componenti di interesse generale, a cui tutte le classi possono accedere, più o meno così: MainPanel mp = ComponentRegistry.getComponent( "MAIN PANEL" ); Secondo voi c'e' qualche controindicazione?
__________________
|Java Base| |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Sep 2005
Città: Torino
Messaggi: 606
|
Quote:
"certe volte" se riesci fammi sapere che ti faccio una statua!!!!!
__________________
"Se proprio dovete piratare un prodotto, preferiamo che sia il nostro piuttosto che quello di qualcun altro." [Jeff Raikes] "Pirating software? Choose Microsoft!" |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Come implementazione non è difficile, oggi o domani comincio il refactoring.
A presto!
__________________
|Java Base| |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Una cosa di questo tipo:
Codice:
public class ComponentRegistry
{
private static final Map<String, Component> map =
new HashMap<String, Component>();
private ComponentRegistry() {}
public static void bind(String key, Component component)
{
map.put( key, component );
}
public static Set<String> getBoundComponentNames()
{
return map.keySet();
}
public static Component getComponent(String name)
{
return map.get(name);
}
}
ComponentRegistry.bind( "MAIN_WINDOW", frame ); e si recupera con getComponent: JFrame main = (JFrame) ComponentRegistry.getComponent( "MAIN_WINDOW" ); Naturalmente vanno registrati solo i componenti di particolare interesse, di uso "generale". Se avete idee dite pure.
__________________
|Java Base| Ultima modifica di lovaz : 26-03-2007 alle 18:30. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
|
Quote:
potresti anche pensare di creare un oggetto e passarlo ai vari oggetti che ne hanno bisogno. La cosa brutta imho del registry, e che rischi l'aliasing dei nomi. Inoltre di devi ricordare ogni volta che ne crei un componente di metterlo dentro. A meno che di far fare la creazione direttamente al registry... Altra soluzione potresti nel tuo getInstance mettere un parametro per capire che vuoi il registro della finestra X, o di un gruppo X. Se l'applicazione è semplice, o cmq non prevede sviluppi futuri lascia perdere queste seghe mentali
Ultima modifica di thebol : 24-03-2007 alle 13:14. |
|
|
|
|
|
|
#6 | |||||
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Quote:
che ottengo usando direttamente la classe "come fosse un oggetto". Capisco che in fondo è una variabile globale, ma forse la cura (non usarlo) è peggiore del male - a proposito, da dove viene la citazione? Quote:
Quote:
che mi interessa registrare. Se il componente non è registrato ci penserò, magari lancio un'eccezione. Quote:
Quote:
__________________
|Java Base| |
|||||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:03.










|









