Я не верю, что реализую фабричный шаблон правильно, потому что метод Application
class ' createDocument
принимает любой тип класса,
public abstract class Document {
public Document () {
System.out.println («Создан новый экземпляр документа:» + this.toString ());
}
}
DrawingDocument.java
пакет com.example.factory
открытый класс DrawingDocument расширяет Document {
public DrawingDocument () {
System.out.println ("Создан новый экземпляр DrawingDocument:" this.toString ());
}
}
Application.java
пакет com.example.factory;
public class Application {
public T createDocument (Class documentClass) {
пытаться {
вернуть documentClass.newInstance ();
} catch (InstantiationException e) {
выбросить новое исключение IllegalArgumentException (e);
} catch (IllegalAccessException e) {
выбросить новое исключение IllegalArgumentException (e);
}
};
}
Main.java
пакет com.example.factory;
public static void main (String [] args) {
Приложение application = новое приложение ();
application.createDocument (DrawingDocument.class);
}