31 lines
880 B
Java
31 lines
880 B
Java
package abstractfactory;
|
|
|
|
public class Application {
|
|
|
|
// The client holds references to the Abstract Factory and Abstract Products.
|
|
// It never imports LightButton, DarkButton, or any concrete class.
|
|
private final UIFactory factory;
|
|
private Button submitButton;
|
|
private TextField usernameField;
|
|
|
|
public Application(UIFactory factory) {
|
|
this.factory = factory; // theme is injected; client doesn't decide
|
|
}
|
|
|
|
public void buildUI() {
|
|
// Ask the factory — get consistent products from the same family
|
|
submitButton = factory.createButton();
|
|
usernameField = factory.createTextField();
|
|
}
|
|
|
|
public void render() {
|
|
System.out.println("Rendering login screen:");
|
|
usernameField.render();
|
|
submitButton.render();
|
|
}
|
|
|
|
public void simulateSubmit() {
|
|
submitButton.onClick();
|
|
}
|
|
}
|