J'ai le problème suivant illustré par le code pseudo ci-dessous (peut-être pas faire beaucoup de sens):Modèle de conception créative pour ce problème?
class Form {
boolean loggedOn = false;
String id = null;
...get/set shared methods
}
class SearchFormA extends Form{
String name = null;
String email = null;
...get/set methods
}
class SearchFormB extends Form{
String age = null;
String gender = null;
...get/set methods
}
class Search {
public Search(HttpServletRequest request){
String searchMode = (String) request.getSearchMode();
if("0".equals(searchMode)){
SearchFormA formA = new SearchFormA();
formA.setName((String)request.getParameter("name"));
formA.setId((String)request.getParameter("id"));
...populate form
request.getSession().setAttribute("formA",formA);
}
if("1".equals(searchMode)){
SearchFormB formB = new SearchFormB();
formB.setAge((String)request.getParameter("age"));
formB.setId((String)request.getParameter("id"));
...populate form
request.getSession().setAttribute("formB",formB);
}
...rest of code
}
}
Ce que je l'ai fait utilise la réflexion, mais est-il une autre façon de le faire à compiler le temps? J'ai également essayé la méthode Factory, mais les classes SearchFormA et SearchFormB n'ont pas beaucoup en commun.
EDIT: ok, fondamentalement, dans ce cas, j'ai 4-5 searchModes, chaque searchMode a une forme différente. Entre ces formes, ils partagent certains champs similaires. A l'avenir, je pourrais avoir à ajouter 10 searchModes et ça va être répéter beaucoup de remplissage des mêmes champs.
D'où vient la valeur de searchMode? De la demande? – migu
Utilisez simplement la surcharge de méthode pour les différents types et factorisez les choses courantes. Pensez à taper Search; c'est-à-dire 'Search' –
Bohemian
Où utilisez-vous la réflexion? Je ne vois pas une telle utilisation. –