Java/Java 객체지향 디자인 패턴

[Java 객체 지향 디자인 패턴] 5. 스트래티지 패턴 - Strategy Pattern~! 전략 패턴~!

디벨로펄 2022. 2. 23.
반응형

안녕하세요~! 펄입니다.

드디어! 구체적인 디자인 패턴에 대해서 공부하게 됐어요... 서론이 생각보다 길고 생각보다 중요한 것 같기도...

 

책에서는 로봇을 예제로 설명을 해준다. 예제는 생략하고 연습문제를 풀면서 뒤쪽에서 설명해보도록 하겠습니다.

 

5.4 스트래티지 패턴 - Strategy Pattern 

 전략을 쉽게 바꿀 수 있도록 해주는 디자인 패턴이다. 전략은 일을 수행하는 방식, 비즈니스 규칙, 문제 해결 알고리즘 등으로 이해할 수 있다. 스트래티지 패턴에서는 같은 문제를 해결하는 여러 알고리즘이 클래스별로 캡슐화되어 있고 이들이 필요할 때 교체할 수 있도록 함으로써 동일한 문제를 다른 알고리즘으로 해결할 수 있게 하는 디자인 패턴이다. 

StarUML로  작성한 StrategyPattern 컬레보레이션.

Strategy 패턴에서 나타나는 역할이 수행하는 작업

- Strategy : 인터페이스나 추상 클래로 외부에서 동일한 방식으로 알고리즘을 호출하는 방법을 명시한다.

- ConcreteStrategy1, ConcreteStrategy2, ConcreteStrategy3 : 스트래티지 패턴에서 명시한 알고리즘을 실제로 구현한 클래스.

- Context : 스트래티지 패턴을 이용하는 역할 수행. 필요에 따라 구체적인 전략을 바꿀 수 있도록 setter 메서드 제공.

 

 

 

연습문제

1. 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 작업 수행 구조는 바꾸지 않으면서 특정 단계에서 수행하는 작업은 바꾸는 패턴.

2. 스트래티지 패턴의 일반적인 클래스 다이어그램을 작성하라 ↑위에 있음 ㅎ.ㅎ

3. 스트래터지 패턴을 사용. 다음 요구사항 만족하는 코드 작성

. 회원 이름은 이름과 누적 대여 금액을 갖는다.

. 책은 서명, 출판년도, 가격을 갖는다(재고 무한대라 가정)

. 회원 하나의 책을 1권 이상 살수 있다.

. 회원 책 살때마다 누적 금액 저장,

. 가격 정책 따라 책 값 할인, 다른 가격 정책 추가 될 수 있음.  -->여길 Strategy로 구현해야겠다.

. 10년이상책 책 자체 할인, 누적 대여 금액이 만원 이상이면 회원할인, 그 외 할인 X

클래스 다이어그램

책이랑 매우 흡사합니다만 구현이 조금 다르긴 하네요..ㅎㅎ

 

6. 영수증 프린터 문제. 실제 영수증 프린터 기기를 연결해 제대로 출력되는지 살펴봐야 한다. 이것은 번거로운 작업인데 이를 해결할 수 있는 방법은?

-- Printer 라는 interface를 하나 구성. Sale 객체 내에 Printer를 가지고 있으며, setPrinter로 외부에서 printer를 set해준다. 간이 테스트를 위해서는 FakePrinter라는 console에 프린트하는 interface를 구현하여 외부에서 set하면서 test를 진행한다. 실제 테스트에서는 HD108ReceiptPrinter를 interface 구현하고 외부에서 set해준다. 

 

 

연습문제 풀어보니까 디자인패턴을 왜 써야하는지 조금알 것 같네.. 진짜 작은 기능하나하나씩 구현하면 되니까 품이 적게 들어가네요.

 

소스코드는 여기 있습니다. 

https://github.com/dhdnjswnd/JavaObjectiveDesignPattern/tree/main/src/chapter5_strategy

 

GitHub - dhdnjswnd/JavaObjectiveDesignPattern: 자바 객체지향 디자인패턴 공부자료

자바 객체지향 디자인패턴 공부자료. Contribute to dhdnjswnd/JavaObjectiveDesignPattern development by creating an account on GitHub.

github.com

 

 

 

JAVA 객체지향 디자인 패턴 - 교보문고

UML과 GoF 디자인 패턴 핵심 10가지로 배우는 | 이 책이 제시하는 핵심 내용객체지향 이론과 UML을 통해 GoF 디자인 패턴의 핵심 10가지를 배운다.이 책의 특징과 장점5단계 학습법으로 디자인 패턴을

www.kyobobook.co.kr

 

반응형

댓글