1. 데코레이터 패턴
구조를 변경하지 않고 기존 객체에 새로운 기능을 허용합니다. 이 유형의 설계 패턴은 기존 클래스의 패키지 인 구조 패턴에 속합니다.
이 패턴은 원래 클래스를 마무리하기 위해 장식 클래스를 생성하고 클래스 메소드 서명의 무결성을 유지하면서 추가 기능을 제공합니다.
우리는 다음 예제를 통해 데코레이터 모드의 사용을 보여줍니다. 그 중에서도 모양 클래스를 변경하지 않고 다른 색상의 모양을 장식합니다.
2. 실현
모양 인터페이스와 모양 인터페이스를 구현하는 엔티티 클래스를 생성합니다. 그런 다음 모양 인터페이스를 구현하고 모양 객체를 인스턴스 변수로 사용하는 추상적 인 장식 클래스 Shapedecorator를 만듭니다.
redghapedecorator는 Shapedecorator를 구현하는 엔티티 클래스입니다.
Decoratorpatterndemo, 데모 클래스는 Redshapedecorator를 사용하여 모양 객체를 장식합니다.
1 단계
인터페이스를 만듭니다.
shape.java
공개 인터페이스 모양 {void draw ();} 2 단계
인터페이스를 구현하는 엔티티 클래스를 만듭니다.
사각형. 자바
공개 클래스 사각형 구현 {@override public void draw () {System.out.println ( "shape : rectangle"); }}Circle.java
공개 클래스 서클은 모양 {@override public void draw () {System.out.println ( "shape : circle")을 구현합니다. }} 3 단계
모양 인터페이스를 구현하는 추상적 인 장식 클래스를 만듭니다.
Shapedecorator.java
공개 초록 클래스 Shapedecorator는 모양 {보호 된 모양 DecoratedShape; public shapedecorator (Shape DecoratedShape) {this.DecoratedShape = DecoratedShape; } public void draw () {decoratedShape.Draw (); }} 4 단계
Shapedecorator 클래스에서 확장되는 엔티티 장식 클래스를 만듭니다.
redghapedecorator.java
공개 클래스 레드 쉐이프 코터 확장 ShapedEcorator {public redshapedecorator (Shape DecoratedShape) {Super (DecoratedShape); } @override public void draw () {decoratedshape.draw (); SetRedborder (DecoratedShape); } private void setredborder (Shape DecoratedShape) {System.out.println ( "Border Color : Red"); }} 5 단계
레드 쉐이프 코터를 사용하여 모양 객체를 장식하십시오.
Decoratorpatterndemo.java
public class decoratorpatterndemo {public static void main (String [] args) {shape circle = new Circle (); 모양 redcircle = new redghapedecorator (new Circle ()); Shape redrectangle = new redghapedecorator (new Rectangle ()); System.out.println ( "정상 테두리가있는 원"); Circle.Draw (); System.out.println ( "/ncircle of red border"); redcircle.draw (); System.out.println ( "/nrectangle of red border"); redrectangle.draw (); }} 6 단계
출력을 확인하십시오.
정상적인 Bordershape와 함께 원 : Red Bordershape의 Circleclecle : Circleborder Color : Red rectangle of Red BordersHape : ERCTANGLEBORDER COLOR : Red
이 기사가 모든 사람이 Java 프로그래밍을 배우는 데 도움이되기를 바랍니다.