Java

buttons

buttons/Button.java: Common product interface

package refactoring_guru.factory_method.example.buttons;

/**
 * Common interface for all buttons.
 */
public interface Button {
    void render();
    void onClick();
}

buttons/HtmlButton.java: Concrete product

package refactoring_guru.factory_method.example.buttons;

/**
 * HTML button implementation.
 */
public class HtmlButton implements Button {

    public void render() {
        System.out.println("<button>Test Button</button>");
        onClick();
    }

    public void onClick() {
        System.out.println("Click! Button says - 'Hello World!'");
    }
}

buttons/WindowsButton.java: One more concrete product

factory

factory/Dialog.java: Base creator

factory/HtmlDialog.java: Concrete creator

factory/WindowsDialog.java: One more concrete creator

Demo.java: Client code

OutputDemo.txt: Execution result (HtmlDialog)

OutputDemo.png: Execution result (WindowsDialog)

Last updated