2010-01-26 3 views
2

Je suis confronté à un problème de conception. Je les classes suivantes (pertinentes):Besoin d'aide avec la conception Java de Http Requester

class LoginScreen { 
    public login() { 
     httpRequest = factory.createHttpRequest(url, method, this); 
     httpRequest.start(); 
    } 
    public authorize() { 
     httpRequest = factory.createHttpRequest(url, method, this); 
     httpRequest.start(); 
    } 
    public requestSucceeded(){...} 
    public requestFailed(){...} 
} 

class HttpRequest extends Thread { 

    LoginScreen screen; 
    ... 

    public HttpRequest(url, method, screen) { 
     this.url = url; 
     this.method = method; 
     this.screen = screen 
    } 

    public run() { 
    ... 
    } 
} 

Comme vous pouvez le voir, à la fois connexion() et autorise() exécutera le code suivant:

httpRequest = factory.createHttpRequest(url, method, loginScreen); 
httpRequest.start(); 

Et puis, dans la taraudée classe HttpRequest après le HttpRequest, la méthode run() mettra à jour LoginScreen directement avec ses résultats. Par exemple:

screen.requestSucceeded(baos.toByteArray(), contentType); 

Ceci s'avère toutefois être un très mauvais concept. Je veux que la classe de méthode HttpRequest soit réutilisable dans le futur, et je veux pouvoir lui passer beaucoup de types différents de classes, ou d'écrans. À l'heure actuelle, il ne fonctionne qu'avec LoginScreen et il met directement à jour l'interface utilisateur LoginScreen.

Quelqu'un a des suggestions sur la façon dont je peux mettre à jour cette conception? Si vous pouviez fournir autant de détails que possible, j'apprécierais grandement car j'ai essayé beaucoup de choses différentes et je continue de rencontrer des problèmes.

Merci!

Répondre

2

Jetez un oeil à Observer pattern. Ici, dans ce cas, vos écrans d'interface utilisateur seront des observateurs.

Questions connexes