이 에세이는 주로 Java에서 간단한 데코레이터 디자인 패턴의 구현을 소개합니다.
먼저 데코레이터 디자인 패턴의 클래스 다이어그램을 살펴보겠습니다.
그림에서 볼 수 있듯이 Component 인터페이스의 어떤 구현 클래스라도 꾸밀 수 있으며, 이러한 구현 클래스에는 데코레이터 자체도 포함되어 있으며, 데코레이터 자체도 다시 꾸밀 수 있습니다.
다음은 Java로 구현된 간단한 데코레이터 디자인 패턴입니다. 커피의 기본 추가로 시작하여 계속해서 우유, 초콜릿, 설탕을 추가할 수 있는 데코레이터 시스템을 제공합니다.
interface Component { void method(); } class Coffee implements Component { @Override public void method() { // TODO Auto-generated method stub System.out.println("倒入咖啡"); } } class Decorator implements Component { public Component comp; public Decorator(Component comp) { this.comp = comp; } @Override public void method() { // TODO Auto-generated method stub comp.method(); } } class ConcreteDecorateA extends Decorator { public Component comp; public ConcreteDecorateA(Component comp) { super(comp); this.comp = comp; } public void method1() { System.out.println("倒入牛奶"); } public void method2() { System.out.println("加入糖 "); } public void method() { super.method(); method1(); method2(); } } class ConcreteDecorateB extends Decorator { public Component comp; public ConcreteDecorateB(Component comp) { super(comp); this.comp = comp; } public void method1() { System.out.println("加入巧克力"); } public void method() { super.method(); method1(); } } public class TestDecoratePattern { public static void main(String[] args) { Component comp = new Coffee(); comp.method(); System.out.println("--------------------------------------------------"); Component comp1 = new ConcreteDecorateA(comp); comp1.method(); System.out.println("--------------------------------------------------"); Component comp2 = new ConcreteDecorateB(comp1); comp2.method(); System.out.println("--------------------------------------------------"); Component comp3 = new ConcreteDecorateB(new ConcreteDecorateA(new Coffee())); comp3.method(); System.out.println("--------------------------------------------------"); Component comp4 = new ConcreteDecorateA(new ConcreteDecorateB(new Coffee())); comp4.method(); } }
운영 결과:
위 내용은 모두의 학습에 도움이 되기를 바랍니다. PHP 중국어 웹사이트를 지원합니다.
Java 데코레이터 디자인 패턴의 예비 탐색과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!