Ceci est un autre modèle de conception dans un code hérité que je ne pouvais pas trouver beaucoup sur google. Dans ce cas, une classe enfant étend son parent abstrait, mais tourne à droite autour et déclare une instance statique du parent:Quand et pourquoi une classe enfant déclare un membre d'instance statique de la classe parente?
public abstract class MessageBase {
protected DAOFactory factory;
// method declarations
}
public class EDWMessage extends MessageBase {
private static MessageBase instance;
public static MessageBase getInstance(Properties properties) {
if (instance == null) {
instance = new EDWMessageTransaction(properties, null);
}
return instance;
}
//more code
}
Je ne suis pas sûr de comprendre ce conduirais ce modèle de conception (si elle est modèle connu). Est-ce une sorte de modèle de commodité pour éviter de déclarer statique chaque variable membre du parent? Ou est-ce destiné à autoriser plusieurs classes enfants à avoir chacune une instance du parent. Mais si c'est le cas, pourquoi l'utilisation excessive de l'héritage sur la simple composition?
Le reste du code n'indique pas pourquoi cela serait fait de cette manière. Toutes les pensées ou idées seraient très appréciées. Merci!
P.S. Je semble courir dans beaucoup de designpatterns dans ce code hérité que je ne sais pas manipuler. Merci à tous ceux qui m'ont déjà aidé.
Éditer: Expansion de l'exemple de code. Je modifierai à nouveau lorsque je découvrirai un endroit qui utilise réellement ce code. Yay pour pas de documentation.
Comment la variable d'instance est-elle utilisée? – Ralph