정의 : 원본 파일을 변경하고 상속을 사용하지 않고 객체의 기능을 동적으로 확장하십시오. 그것은 래퍼 객체, 즉 장식을 만들어 실제 물체를 감습니다.
특징:
(1) 장식적인 물체와 실제 물체는 동일한 인터페이스를 가지고 있습니다. 이런 식으로 클라이언트 객체는 실제 객체와 같은 방식으로 장식 객체와 상호 작용할 수 있습니다.
(2) 장식 물체에는 실제 물체에 대한 참조가 포함되어 있습니다.
(3) 장식 객체는 클라이언트의 모든 요청을 받아들입니다. 이 요청을 실제 객체로 전달합니다.
(4) 장식 물체는 이러한 요청을 전달하기 전 또는 후에 추가 기능을 추가 할 수 있습니다. 이를 통해 런타임에 주어진 객체의 구조를 수정하지 않고 외부에서 추가 기능을 추가 할 수 있습니다. 객체 지향 설계에서, 주어진 클래스에 대한 기능 확장은 일반적으로 상속을 통해 달성됩니다.
기업 수준 개발 및 일반적으로 사용되는 프레임 워크의 응용 프로그램 : IO 스트리밍 기본 아키텍처
구성:
(1) 추상 구성 요소 역할 : 추가 책임을받을 준비가 된 개체를 규제하기위한 추상 인터페이스를 제공합니다.
(2) 구체적인 구성 요소 역할 : 추가 책임을받을 클래스를 정의합니다.
(3) 데코레이터 역할 : 구성 요소 객체의 인스턴스를 보유하고 추상 구성 요소 인터페이스와 일치하는 인터페이스를 구현합니다.
(4) 콘크리트 데코레이터 역할 : 구성 요소 객체에 추가 책임을 추가 할 책임이 있습니다.
구체적인 예 :
/*** 장식 주택의 다음 예*/공개 클래스 데모 {public static void main (String [] args) {Generichouse House = New Generichouse (); 차고 차고 = 새로운 차고 (집); Garage.dosomething (); 주방 주방 = 새로운 주방 (집); kitchen.dosomething (); }}/*** 초록 구성 요소 역할 : 특정 장식의 위치를 조절하는 인터페이스*/인터페이스 오트라 트랙스 {public void dosomething ();}/*** 장식 역할 : 장식 할 대상을 잡아 든다*/클래스 마스터 abstracthouse {private albtracthouse abtracthouse; 공개 마스터 (Abstracthouse Abstracthouse) {this.abstracthouse = Abstracthouse; } public void dosomething () {System.out.println ( "장식 역할 : 장식적인 역할 홀더, 여기에 집의 소유자가 있습니다"); Abstracthouse.dosomething (); }}/*** 특정 구성 요소 역할 : 장식 해야하는 특정 객체*/클래스 Generichouse는 Abstracthouse {public void dosomething () {System.out.println ( "특정 생성자 역할 : 집은 바람과 비에서 사람들과 대피소에 살 수 있습니다!"); }}/*** 특정 장식 역할 : 특정 장식은 여기에서 만들어지며 장식 역할에서 물려받습니다. 장식적인 역할은 장식적인 대상을 유지하기 때문에 *는 장식적인 물체를 보유하고 장식 할 수 있습니다 */클래스 차고는 마스터 {public Garage (Abstracthouse Abstracthouse) {Super (Abstracthouse); } public void dosomething () {super.dosomething (); System.out.println ( "특정 장식 역할 : 여기에 장식하고 집 중 하나를 차고로 장식하여 집이 차를 보관할 수 있도록"); }}/*** 특정 장식 역할 : 특정 장식은 여기서 만들어지며, 장식적인 역할이 장식적인 대상을 유지하기 때문에 장식적인 역할에서 물려받습니다. 따라서 장식적인 대상을 유지하고 장식 할 수 있습니다*/클래스 주방은 마스터 {public Kitchen (Abstracthouse obstracthouse) {Super (Abstracthouse); } public void dosomething () {super.dosomething (); System.out.println ( "특정 장식 역할 : 여기에 장식하고 집 중 하나를 부엌으로 장식하여 집이 요리 할 수 있습니다"); }}실제 개발에서 패턴 장식의 포장 기능은 큰 역할을합니다. 원래 객체를 변경하지 않고 객체에서 다른 작업을 수행 할 수있어 객체를 변형시키는 것을 방해 할 수 있지만 동시에 일부 작업을 잘 완료 할 수 있습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.