이 글은 디자인 패턴과 관련된 이슈를 주로 소개하는 java에 대한 관련 지식을 제공합니다. 주로 기존 객체 구조를 변경하지 않고 동적으로 변경하는 것을 말하는 데코레이터 패턴의 관련 내용을 의미합니다. 모두에게 도움이 되십시오.
추천 학습: "java 비디오 튜토리얼"
데코레이터 패턴 정의: 기존 객체 구조를 변경하지 않고 동적으로 변경하는 것을 말합니다 패턴입니다 객체에 일부 책임을 추가하는 것(즉, 추가 기능을 추가하는 것)은 객체 구조 패턴에 속합니다.
1. 데코레이터는 상속에 대한 강력한 보완 기능이며 상속보다 더 유연합니다. 원래 개체를 변경하지 않고도 기능을 개체로 동적으로 확장할 수 있습니다. 플러그 앤 플레이
2. 데코레이터를 사용하여 클래스를 꾸밀 필요가 없습니다. 그리고 이러한 데코레이션 클래스의 배열과 조합은 다양한 효과를 얻을 수 있습니다
3. 데코레이터 모드는 열기 및 닫기 원칙을 완전히 준수합니다.
데코레이터 모드는 많은 하위 클래스를 추가하고 과도하게 사용하면 프로그램.
일반적으로 클래스의 기능 확장은 상속을 사용하여 구현됩니다. 그러나 상속에는 정적 특성과 높은 결합도가 있으며 확장된 기능이 증가하면 하위 클래스도 확장됩니다. 실제 객체를 래핑하고 실제 객체의 클래스 구조를 변경하지 않고 유지하면서 추가 기능을 제공하기 위해 래퍼 객체(즉, 데코레이션 객체)를 생성하기 위해 컴포지션 관계를 사용하는 경우, 이것이 데코레이터 패턴의 목표입니다. 기본 구조와 구현 방법을 분석해 보겠습니다.
케이스: 헤이샤오후가 일곱 영웅을 잡고 무지개 고양이를 구웠어요
추상 컴포넌트(Component) 역할: 일곱 영웅
콘크리트 컴포넌트(ConcreteComponent) 역할: Hongmao
추상 데코레이터 역할: 재료 추가
콘크리트 장식자 역할: 소금과 커민을 추가합니다.
Qixia 인터페이스는 바베큐 추상 메소드를 선언합니다
public interface Qi { void show();}
Hongmao 클래스는 Qixia 인터페이스를 구현하고 Hongmao를 로스팅하는 메소드를 구현합니다. 그 Qixia 인터페이스를 구현하고 Qixia 속성을 선언하며 Qixia 바베큐 메서드를 호출하는 데 사용됩니다
public class Hong implements Qi { @Override public void show() { System.out.println("烧烤一个虹猫"); }}
추상 클래스를 상속하고 A salt
public class JiaLiao implements Qi { private Qi qi; JiaLiao() { } JiaLiao(Qi component) { this.qi = component; } @Override public void show() { qi.show(); }}
을 추가하여 바베큐 메서드를 다시 작성합니다.추상 클래스를 상속하고 굽는 방법을 다시 작성하고 커민
public class Yan extends JiaLiao { private Qi qi; Yan() { } Yan(Qi qi) { super(qi); } @Override public void show() { super.show(); add(); } public void add() { System.out.println("加盐"); }}
소금과 커민 추가새로 무지개 고양이를 추가하고 굽었습니다.
소금 추가
public class ZiRan extends JiaLiao { private Qi qi; ZiRan() { } ZiRan(Qi qi) { super(qi); } @Override public void show() { super.show(); add(); } public void add() { System.out.println("加孜然"); }}
요약
홍마오뿐만 아니라 다른 세븐 히어로즈도 그릴 수 있습니다. 세븐 히어로즈 인터페이스를 구현하려면 클래스만 추가하면 됩니다. 그리고 소금이나 큐민을 첨가해도 홍마오의 원래 육질은 변하지 않습니다.
추천 학습: "java 비디오 튜토리얼"
위 내용은 JAVA 데코레이터 패턴 요약 및 정리(상세 예시)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!