L'exemple de code Documentum n'est jamais commenté en profondeur, donc ma question est:À quoi sert la méthode getQuery?
Que signifie cette ligne?
IDfQuery query = DfcUtils.getClientX().getQuery();
L'exemple de code Documentum n'est jamais commenté en profondeur, donc ma question est:À quoi sert la méthode getQuery?
Que signifie cette ligne?
IDfQuery query = DfcUtils.getClientX().getQuery();
Une réponse à une question ancienne, mais la L'affiche originale demandait ce que signifie la ligne, et non les alternatives qui peuvent être utilisées.
La ligne crée une instance d'une implémentation IDfQuery à partir d'une méthode usine dans une instance d'un objet créé par la méthode factory statique dans une classe DFCUtils. Cet objet est ensuite affecté à une variable.
Ainsi: -
Ceci est un modèle d'usine typique, où la méthode/fonction getQuery() détermine quel type d'objet à retourner, en fonction des règles ou des paramètres de configuration. Ceci est préférable à la création d'une instance d'une classe concrète, lorsque plusieurs implémentations d'une interface sont disponibles. Généralement, une fabrique agit comme un amorceur de classe, initialisant les propriétés avant de vous renvoyer l'objet.
Essentiellement, vous pouvez avoir une méthode de fabrication contenant une condition comme une instruction switch qui choisit quelle mise en œuvre pour revenir, savoir que la COI (inversion de contrôle): -
public static IDfQuery getQuery(){
IDfQuery returnValue;
switch (getDayOfWeek()) {
case "Monday" : returnValue = new MondayQuery(); break;
case "Tuesday" : returnValue = new TuesdayQuery(); break;
case "Wednesday" : returnValue = new WednesdayQuery(); break;
case "Thursday" : returnValue = new ThursdayQuery(); break;
case "Friday" : returnValue = new FridayQuery(); break;
case "Saturday" : returnValue = new SaturdayQuery(); break;
case "Sunday" : returnValue = new SundayQuery(); break;
default: returnValue = null; break;
}
return returnValue;
}
public static String getDayOfWeek(){
return new SimpleDateFormat("EEEE").format(new Date());
}
Vous pouvez en toute sécurité le remplacer en Java avec
IDfQuery query = new DfQuery();
Cette approche avec une méthode d'usine vient les vieux jours Docbasic qui a obtenu limités par ce que COM peuvent ou ne peuvent pas faire
Désolé une nouvelle meilleure réponse est à venir! Abooth l'explique mieux, plus fort, plus vite #daftpunkstyle – enguerran
Il est vrai qu'il explique mieux le patron d'usine. Mais le modèle d'usine n'est pas la motivation ici pour le code Documentum ici. COM est –
On peut utiliser le
IDfQuery query = new DfQuery();
approche
Le guide DFC en cours, mais recommande clairement en utilisant la classe usine com.documentum.com.DfClientX pour obtenir de nouvelles instances d'objets tels que DfQuery au lieu d'invoquer directement le constructeur
Vous avez manqué le point de ma réponse. Ce n'est pas le modèle d'usine ici. Ce qu'il fait est exactement 'new DfQuery()'. Le code existe également pour que vous puissiez avoir la même chose en Java qu'en VB. –