이 기사에서는 Java 디자인 패턴의 장식 모드의 원리와 사용에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
장식 모드는 원본 파일을 변경하거나 상속을 사용하지 않고 객체의 기능을 동적으로 확장 할 수 있습니다. 그것은 래퍼 객체, 즉 장식을 만들어 실제 물체를 감습니다. JDK에서 IO의 설계는 장식 모드를 사용하여 필터링 흐름을 통해 노드 흐름을 감싸서 기능을 확장 할 수 있습니다.
장식 모드에서 캐릭터의 구성 :
① 추상 구성 요소 역할 : 처리 기능을 수신 할 준비가 된 개체를 표준화하기위한 추상 인터페이스를 제공합니다. (입력 스트림, 출력 스트림)
concrete 콘크리트 구성 요소 역할 : 추가 기능을받을 클래스를 정의합니다. (노드 흐름)
decorator 역할 : 구성 요소 객체의 인스턴스를 보유하고 추상 구성 요소 인터페이스와 일치하는 인터페이스를 구현합니다. (FilterInputStream, FilterOutputStream)
CONCRETE DERCITAR 역할 : 구성 요소 개체에 추가 기능을 추가하는 책임. (특정 추가 함수, BufferedInputStream, DatainputStream 등의 필터 흐름)
다음은 장식 패턴의 간단한 예입니다.
1. 추상 구성 요소 역할 : 인터페이스 구성 요소를 정의합니다
package com.tydic.decorator; // 초록 구성 요소 역할 공개 인터페이스 구성 요소 {public void dosomething ();}2. 특정 구성 역할 : 추상 구성 요소 역할을 구현해야 하며이 개체에 책임을 추가 할 수 있습니다.
패키지 com.tydic.decorator;/** * 콘크리트 역할 구성, 추상적 인 역할 구성 구현 * @Author 관리자 * */public class concretecomponent 구성 요소 {@override public void dosomething () {System.out.println ( "function a"); }} 3. 역할을 꾸미기 : 역할에 대한 참조를 구축하고 추상 구성 요소 역할을 구현하기 위해 개체를 유지하십시오. FilterInputStream 과 마찬가지로 함수를 추가 한 후 유형을 변경할 수 없기 때문에 추상 구성 요소 역할이 구현됩니다. 객체 빌딩 역할에 대한 언급은 함수를 추가하기 위해서는 함수를 첨부 할 구성 요소 역할에 대한 참조를 유지해야하기 때문입니다.
package com.tydic.decorator;/*** 역할을 장식하고 구성 요소 역할에 대한 참조를 유지하고 구성 요소 역할을 구현* 함수를 추가하려면 구성 요소 역할을 구현해야합니다. 함수를 추가하려면 첨부 할 구성 요소 역할을 참조해야합니다. 그렇기 때문에 구성 요소 역할 * @author 관리자 * */public class decorator는 구성 요소를 구현해야합니다. {개인 구성 요소 구성 요소; // 이것은 첨부 할 구성 요소 역할이며, 인스턴스화 된 공개 데코레이터 (구성 요소) {this.component = 구성 요소; } @override public void dosomething () {component.dosomething (); }}4. 특정 장식 역할 : 장식적인 역할을 상속 받고 첨부 할 기능이 제공됩니다.
패키지 com.tydic.decorator;/** * 특정 장식 역할 1의 경우, 장식적인 역할은 상속되어야하고 첨부 할 기능은 * @author 관리자 * */public class concretedecorator1을 확장 {public concretedecorator1 (component component) {super (component); } @override public void dosomething () {super.dosomething (); this.doanothing (); // 전달 된 특정 구성 요소 역할의 원래 함수를 기반으로 함수 추가} // 추가 함수 public void doanothing () {system.out.println ( "function b"); }} 패키지 com.tydic.decorator;/** * 특정 장식 역할 2의 경우, 장식적인 역할은 상속되어야하며 첨부 할 기능은 * @author 관리자 * */public class concretedecorator2를 확장 {public concretedecorator2 (component component) {super (component); } @override public void dosomething () {super.dosomething (); this.doanothing (); // 추가 함수 public void doanothing () {system.out.println ( "function c"); }}5. 클라이언트 코드를 작성하십시오
package com.tydic.decorator; public class client {public static void main (string [] args) {구성 요소 구성 요소 = new ConcreteComponent (); 역할 구성 요소 구성 요소 구성 2 = new ConcreteEcorator1 (구성 요소 구성 구성 요소 구성 요소 구성 요소 구성 요소 3 = New ConcretedEcorator2); // 구성 요소 2); }}요약 :
장식 모드는 조합 방법을 사용하고 상속없이 런타임에서 개체를 동적으로 확장 할 수 있습니다. 이것은 상속이 할 수없는 일입니다. 상속은 정적이며 클래스의 확장입니다.
장식 모드의 장점과 단점 :
장점 : 1. 상속보다 유연한 물체의 기능을 확장합니다. 2. 다양한 장식 범주와 이러한 장식 범주의 배열과 조합을 사용하여 디자이너는 다양한 동작의 많은 조합을 만들 수 있습니다.
단점 : 프로그램을 더욱 복잡하게 만들 것입니다.
더 많은 Java 관련 컨텐츠를 위해이 사이트에 관심이있는 독자는 "Java 객체 지향 프로그래밍에 대한 소개 및 고급 튜토리얼", "Java 데이터 구조 및 알고리즘에 대한 자습서", "Java Operation Dom Node Skills 요약", "Java 파일 및 디렉토리 운영 기술 요약"및 "Java Cache Cache 운영 기술 요약"을 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.