Это еще один шаблон дизайна в каком-то устаревшем коде, о котором я не смог найти много информации в Google. В этом случае дочерний класс расширяет своего абстрактного родителя, но затем оборачивается и объявляет статический экземпляр родителя:
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
}
Я не уверен, что понимаю, к чему приведет этот шаблон проектирования (если это известный шаблон). Является ли это своего рода шаблоном удобства, чтобы не объявлять каждую переменную-член родительского элемента как статическую? Или это позволяет нескольким дочерним классам иметь один экземпляр родительского класса. Но если это так, то почему чрезмерное использование наследования по сравнению с простой композицией?
Остальная часть кода не указывает, почему это будет сделано таким образом. Любые мысли или идеи будут высоко ценится. Спасибо!
P.S. Кажется, я сталкиваюсь с множеством интересных дизайнов шаблонов в этом устаревшем коде, с которыми я не знаю, как обращаться. Спасибо всем, кто уже помог мне.
Редактировать: расширение примера кода. Отредактирую снова, когда я найду место, где на самом деле используется этот код. Yay без документации.