개요
장식 모드는 고객에게 투명한 방식으로 물체를 확장하는 기능이며 상속 관계의 대안입니다. 다시 말해, 클라이언트는 장식 전후에 물체 사이에 차이가 있다고 생각하지 않습니다. 장식 모드는 더 많은 서브 클래스를 생성하지 않고 객체의 기능을 확장 할 수 있습니다. 장식 모드의 핵심은이 확장이 완전히 투명하다는 것입니다.
패턴의 구조
UML 클래스 다이어그램 :
장식 모드의 문자 :
추상 구성 요소 역할 (프로젝트) : 추가 책임을받을 준비가 된 객체를 조절하는 인터페이스를 제공합니다.
특정 구성 요소 역할 (Employe) : 추가 책임을받을 클래스 정의
장식 역할 (관리자) : 구성 요소 객체의 인스턴스를 보유하고 추상 구성 요소 인터페이스와 일치하는 인터페이스를 정의합니다.
특정 장식 역할 (Managera, ManagerB) : 구성 요소 개체에 대한 추가 책임 "고정"책임
코드 예제
패키지 인터뷰; 인터페이스 프로젝트 {void docoding ();} class Employe empllemes project {@override public void docoding () {System.out.println ( "엔지니어링 IS 프로그래밍 ..."); }} 클래스 관리자는 프로젝트 {개인 프로젝트 프로젝트; 공공 관리자 (프로젝트 프로젝트) {this.project = project; } @override public void docoding () {startNewwork (); project.docoding (); } public void startNewwork () {}} 클래스 ManageRA Extends Manager {Public Managera (프로젝트 프로젝트) {Super (Project); } @override public void startNewwork () {System.out.println ( "개발 관리자가 새 작업 계획을 시작"); }} Class ManagerB Extends Manager {Public ManagerB (프로젝트 프로젝트) {Super (Project); } @override public void startNewwork () {System.out.println ( "테스트 관리자가 새 작업 계획을 시작"); }} public class maintest {public static void main (String arg []) {project project = new Employe (); Project ManageRA = New Managera (프로젝트); Project ManagerB = New ManagerB (프로젝트); managera.docoding (); managerb.docoding (); }} 장식 모드의 장점과 단점 :
이점:
장식 모드와 상속의 목적은 물체의 기능을 확장하는 것이지만 장식 모드는 상속보다 유연성을 더 많이 제공 할 수 있습니다. 장식 모드를 통해 시스템은 필요한 "장식"을 "고착"하기로 결정할 수 있으며 상속 관계는 다릅니다. 상속 관계는 정적이며 시스템이 실행되기 전에 결정됩니다.
이러한 장식 카테고리의 다른 특정 장식 범주와 조합을 사용함으로써 디자이너는 다양한 행동 조합을 만들 수 있습니다.
결점:
장식 패턴을 사용하기 때문에 상속 관계를 사용하는 것보다 더 많은 수의 클래스가 필요할 수 있습니다. 더 적은 클래스를 사용하면 디자인을보다 쉽게 수행 할 수 있습니다. 그러나 반면에 장식 패턴을 사용하면 상속 관계를 사용하는 것보다 더 많은 물체가 생성됩니다. 더 많은 물체는 특히 모두 비슷해 보이기 때문에 실수를 어렵게 만들 수 있습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.