inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

코딩으로 학습하는 GoF의 디자인 패턴

데코레이터 패턴 1부 - 패턴 소개

실제 데코레이터 패턴을 사용하게 될 때 동적인 특징과 관련해 질문 드립니다.

288

qpal1zm23

작성한 질문수 28

0

데코레이터 패턴에 대해 추가적으로 구글링 하던 와중 아래와 같은 구현 예시를 보게 되었습니다.

3-1. 전방 슈팅이 기본인 슈팅게임에서 아이템 획득에 따라 측방/후방 슈팅이 자유롭게 추가/삭제 되어야 할 때.
3-2. 커피 전문점에서 기본 메뉴에 휘핑, 카라멜 등 첨가물이 자유롭게 추가될 때 가격 정산.



저기서 '자유롭게' 라고 한다면,

'매번 사용자 요청에 따라 동적으로 어떤 부가적인 것을 추가하거나 삭제 하는 것'으로 저는 이해를 했는데요.

 

예시로 보여주신 코드에서는 동적으로 데코레이터를 변경하기 위해서 코드로 flag 값을 수정하거나 혹은 프로퍼티즈를 수정해야 하더라구요.

 

1) 

만약 사용자 요청에 따라 동적으로 데코레이터를 구성해주고 싶다면,

사용자 요청으로 들어온 임의의 구분자에 따라서 아래처럼 계속 반복적으로 생성하는 방법밖에는 없을까요??

Beverage beverage1 = new DarkRoast();

//예로 요청에서  key가 ingredient이고 value가 M 인 값이 2개 있을 경우

beverage1 = new Mocha(beverage1);

beverage1 = new Mocha(beverage1);

// 예로 요청에서  key가 ingredient 이고 value가 W 인 값이 1개 있을 경우

beverage1 = new Whip(beverage1);

System.out.println(beverage1.getDescription()+" cost : "+beverage1.cost());

 

2 )

또한 '동적으로 삭제' 라는 말도 있었는데 
저기서 이미 맨 마지막에 Whip 이라는 객체가 생성되어서 Mocha를 대체 하였는데 삭제 = 즉, 이전 상태로 어떻게 동적으로 되돌릴 수 있을까요??


생각보다 혼자 구성하기가 쉽지 않아서 도움 요청 드립니다...ㅠ

java 디자인-패턴

답변 1

0

백기선

변수 하나를 재사용하고 계신데요. 새로운 래퍼로 감쌀때마다 새로운 변수로 항당하신다면 이전 상태로 되돌릴 수 있을것 같습니다.

그리고 사용자 요청에 따라 동적으로 데코레이터를 구성하려면 flag나 property가 아니라 해당 요청으로 전달된 어떤 입력값을 기준으로 각기 다른 데코레이터를 적용하면 되지 않을까요? 제가 보기엔 요청에 담긴 입력값이나, flag나 property나 다들  비슷한 것 같습니다.

많이 사용되는 패턴의 순서를 정한다면 어떤 순서일까요?

0

135

1

@Builder에 대해 사소한 질문

0

68

1

default 기능이 있는 interface와 추상클래스의 차이

0

63

1

실무 코드에 디자인 패턴 적용 시의 '기준'에 대해 조언을 얻고 싶습니다.

0

56

1

데코레이터 패턴, before 가 O(2^n) 인 이유

0

57

0

혹시 다음강의는 언제쯤..

0

356

1

volatile 사용 이유에 대해서 여쭤보고 싶습니다!

0

649

3

Spring Security 의 ProviderManager (AuthenticationManager) 도 옵저버 패턴을 사용하고 있다고 볼 수 있을까요?

0

402

2

싱글톤 패턴을 깨트리는 방법

0

562

1

코드에 약간 오타가 있는거 같습니다.

0

444

1

싱글톤 (Singleton) 패턴 구현 방법 3 - 2번 퀴즈에 대해 질문이 있습니다.

0

577

2

안녕하세요, 강의 순서 질문드립니다.

0

691

1

스프링 시큐리티 WebSecurityConfigurerAdapter deprecated 대체 코드

0

2436

1

팩토리메소드 = 추상팩토리?

2

926

1

중재자 패턴에 관하여~

0

515

1

undo 메소드 작업중에서

1

375

1

익명클래스로 객체 생성시 의문점

0

598

1

mediator패턴에서 객체끼리 순환참조는 어떻게 해결해야할까요

0

488

1

객체간에 this를 넘기는 부분에 관련해 질문이 있습니다..

1

374

1

전략 패턴과 상태 패턴에 관련해서 질문이 있습니다.

0

291

1

플라이웨이트 패턴 3부에서 HashMap 동시성 질문입니다.

0

264

1

enum 이 이른 초기화 방법이 아니라는 것은,

0

510

1

해당 코드가 C# 에선 접근 관련 컴파일 에러가 뜹니다.

0

439

1

설계관련 궁금증이 있습니다.

0

331

0