الگوی آذینگر
مثال‌ها > مثال اول (پنجره/نوار نبرد)

کلاس زیر نحوهٔ استفاده از آذینگر را در مثال پنجره/نوار نبرد، نشان می‌دهد.
// The Window interface class

public interface Window {

    public void draw(); // برای کشیدن پنجره

    public String getDescription(); // رشته‌ای حاوی توضیح در مورد قابلیت‌ها پنجره را برمی‌گرداند

}

    // پیاده‌سازی رابط فوق به صورت یک پنجرهٔ بدون نوار نبرد

class SimpleWindow implements Window {

    public void draw() {

    // کدهای مربوط به کشیدن پنجره

    }

    public String getDescription() {

        return "simple window";

    }

}
کلاس‌های زیر آذینگرهای کلاس Window و کلاس‌های آذینگر دیگر، هستند.
// کلاس تجریدی آذینگر، دقت کنید که رابط ویندو را یپاده‌سازی می‌کند

abstract class WindowDecorator implements Window {

    protected Window windowToBeDecorated; // the Window being decorated

    public WindowDecorator (Window windowToBeDecorated) {

        this.windowToBeDecorated = windowToBeDecorated;

    }

    public void draw() {

        windowToBeDecorated.draw(); //Delegation

    }

    public String getDescription() {

      return windowToBeDecorated.getDescription(); //Delegation

    }

}

// The first concrete decorator which adds vertical scrollbar functionality

class VerticalScrollBarDecorator extends WindowDecorator {

    public VerticalScrollBarDecorator (Window windowToBeDecorated) {

        super(windowToBeDecorated);

    }

    @Override
    public void draw() {

        super.draw();

        drawVerticalScrollBar();

    }

    private void drawVerticalScrollBar() {

    // Draw the vertical scrollbar

    }

    @Override
    public String getDescription() {

        return super.getDescription() + ", including vertical scrollbars";

    }

}

// The second concrete decorator which adds horizontal scrollbar functionality

class HorizontalScrollBarDecorator extends WindowDecorator {

    public HorizontalScrollBarDecorator (Window windowToBeDecorated) {

    super(windowToBeDecorated);

    }

    @Override
    public void draw() {

        super.draw();
        drawHorizontalScrollBar();

    }

    private void drawHorizontalScrollBar() {

    // Draw the horizontal scrollbar

    }

    @Override
    public String getDescription() {

        return super.getDescription() + ", including horizontal scrollbars";

    }

}
در ذیل این مطلب برنامه‌ای آورده شده‌است که در آن یک نمونه (شئ) از کلاس SimpleWindow ساخته می‌شود و این کلاس با استفاده از کلاس‌های آذینگر با نام‌های HorizontalScrollBarDecorator و VerticalScrollBarDecorator آذین‌می‌شود.
public class DecoratedWindowTest {

public static void main(String[] args) {

// Create a decorated Window with horizontal and vertical scrollbars

Window decoratedWindow = new HorizontalScrollBarDecorator (

new VerticalScrollBarDecorator (new SimpleWindow()));

// Print the Window's description

System.out.println(decoratedWindow.getDescription());

}

}
در زیر هم کلاس بررسی صحت با استفاده از Junit آورده شده‌است:
import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class WindowDecoratorTest {

@Test

public void testWindowDecoratorTest() {

Window decoratedWindow = new HorizontalScrollBarDecorator(new VerticalScrollbarDecorator(new SimpleWindow()));

// assert that the description indeed includes horizontal + vertical scrollbars

assertEquals("simple window, including vertical scrollbars, including horizontal scrollbars", decoratedWindow.getDescription())

}

}
خروجی برنامه متن زیر است:
"simple window, including vertical scrollbars, including horizontal scrollbars"
به این نکته توجه کنید که متد (اسلوب) getDescription() از دو کلاس آذینگر که در مثال آمده‌اند، ابتدا getDescription() پنجرهٔ اصلی یعنی همان شئ از کلاس SimpleWindow را صدا می‌زند و پس از آن Description خود را پس از آن اضافه می‌کنند.