Bonjour,

Je souhaiterais recueillir des retours d'exp�rience en termes de design d'application en java J2ME. Le but est de comprendre quels sont les impl�mentations les plus adapt�es au d�veloppement mobile.

Pour ma part, je n'ai jamais fais que des choses tr�s basiques : des applications soient de type jeux, soient n'affichant que quelques �crans (entre 15 et 20). Pour ce faire j'ai donc suivi quelques conseils pratiques sur les fa�ons de d�velopper en J2ME : optimisation des ressources et surtout tr�s peu de classes... Le plus souvent le design de mes applications ressemblait � quelque chose comme �a:

- La classe Midlet, qui d�finit une instance de la classe Canvas et lance le thread.
- La classe Canvas qui dans une boucle infinie synchronise la gestion des �v�nements et le repaint de l'�cran.

J'ai donc 2 classes dont la plus importante est celle h�ritant de Canvas et qui impl�mente les keyListener sp�cifiques pour la gestion des �v�nements, le httpListener si besoin et le paint(g) pour rafraichir l'�cran.

Tout �tant inclue dans une boucle infinie, je g�re donc une variable m_iState (integer) qui identifie l'�tat de l'application et permet de d�finir les actions � mener dans le keyListener et dans le paint. J'obtiens donc 2 m�thodes qui ressemblent � �a :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
public void KeyPressed(int p_iKeyCode) {
    switch(p_iKeyCode) {
        case KEY_UP:
            switch(m_iState) {
                case APP_STATE_MAIN_MENU:
                    break;
                case APP_STATE_MENU_1:
                    break;
                ...
                default:
                    break;
            }
            break;
        case KEY_DOWN:
            switch(m_iState) {
                case APP_STATE_MAIN_MENU:
                    break;
                case APP_STATE_MENU_1:
                    break;
                ...
                default:
                    break;
            }
            break;
        default:
            break;
    }
}
Et pour la partie rafraichissement d'�cran, quelque chose comme �a:

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
public void paint(Graphics g) {
    switch(m_iState) {
        case APP_STATE_MAIN_MENU:
            dessine_main_menu(g);
            break;
        case APP_STATE_MENU_1:
            dessine_menu_1(g);
            break;
        ...
        default:
            break;
    }
}
On pourrait imaginer que des applications mobiles soient beaucoup plus complexes qu'une vingtaine d'�crans et dans ce cas, l'impl�mentation pr�c�dente trouverait ses limites dans la maintenance du code et la gestion des �volutions de l'application ; on atteindrait vite des fichiers de plusieurs dizaines de milliers de code.

Du coup on serait tenter d'appr�hender le probl�me par l'utilisation du Design Pattern STATE afin de simplifier l'organisation de l'application.



http://rpouiller.developpez.com/tuto...e=page_4#LVI-H

Le probl�me de cette impl�mentation c'est qu'elle demande de cr�er une classe par �tat. Ce qui va � l'encontre des r�gles d'optimisation conseill�es en J2ME.

La question est donc la suivante : avez-vous d�j� travaill� sur des grosses applications J2ME et avez-vous pu impl�menter un design permettant de faciliter le d�veloppement tout en conservant l'optimisation ?

Merci de votre participation.