디자인 모드 (10) 장식 기 모드

1990 단어
장식 기 모드 는 매우 유용 한 구조 형 모델 로 우리 가 클래스 의 결 과 를 바 꾸 지 않 고 클래스 에 새로운 기능 을 추가 할 수 있 도록 한다.
우리 예 를 들 어 설명 합 시다.먼저 모양 을 추가 하고 모양 인 터 페 이 스 를 실현 했다.
public interface Shape {
    String getShape();
}

class Square implements Shape{

    @Override
    public String getShape() {
        return "   ";
    }
}

class Circle implements Shape{

    @Override
    public String getShape() {
        return " ";
    }
}

그리고 장식 기 를 정의 합 니 다.장식 기 역시 Shape 인 터 페 이 스 를 실현 해 야 하고 장식 기 에서 Shape 를 보충 해 야 한다 (즉 장식).
public abstract class ColorDecorator implements Shape {
    protected Shape shape;

    public ColorDecorator(Shape shape) {
        this.shape = shape;
    }

}

class RedDecorator extends ColorDecorator {
    public RedDecorator(Shape shape) {
        super(shape);
    }

    @Override
    public String getShape() {
        return "   " + shape.getShape();
    }
}

class BlueDecorator extends ColorDecorator {
    public BlueDecorator(Shape shape) {
        super(shape);
    }

    @Override
    public String getShape() {
        return "   " + shape.getShape();
    }
}

마지막 으로 다시 한 번 검증 해 보 겠 습 니 다.우 리 는 형상 류 를 수정 하지 않 은 전제 에서 형상 에 색깔 의 기능 을 추가 하 는 데 성공 했다.
    public void run() {
        Shape square = new Square();
        Shape circle = new Circle();

        Shape redSquare = new RedDecorator(square);
        Shape blueCircle = new BlueDecorator(circle);
        System.out.println(redSquare.getShape());
        System.out.println(blueCircle.getShape());
    }

장식 기 모드 는 여러 곳 에서 사용 된다.자바 에서 가장 전형 적 인 사용 장면 은 바로 자바 의 많은 IO 류 이다. 예 를 들 어 4. 567914. 또는 4. 567914. 이런 것 이다.자바 의 IO 라 이브 러 리 는 여러 개의 서로 다른 IO 클래스 의 끼 워 넣 기 를 통 해 다양한 기능 (예 를 들 어 캐 시) 의 조합 을 실현 할 수 있 습 니 다.물론 자바 의 IO 라 이브 러 리 는 부정적인 교재 로 장식 기 모델 의 과도 한 사용 으로 인해 시스템 의 유형 이 너무 많 고 복잡 하 며 오히려 우리 가 공부 하고 사용 하 는 데 불리 하 다.실제 사용 에서 도 우 리 는 디자인 모델 의 합 리 적 인 사용 에 주의해 야 하 며 사용 하기 위해 사용 하지 말 아야 한다.

좋은 웹페이지 즐겨찾기