seong

자바 디자인패턴 - OCP, 전략 패턴 본문

자바/자바 실습

자바 디자인패턴 - OCP, 전략 패턴

hyeonseong 2022. 9. 26. 16:43

OCP (Open Closed Principle)

객체지향의 설계 원칙중 하나이며, 소프트웨어를 개발할 때 기존의 코드를 변경, 수정하지 않으면서 기능을 추가할 수 있도록 설계 하는 것을 말한다. 

예시로 만들면서 확인

아메리카노,카페라떼가 있고

커피 머신에서 아메리카노,카페라떼를 호출해서 만들어주는 역할을 한다.

App이 Main의 역할 실행을 해주게된다.

 

Americano.java

 

CafeLatte.java

 

CoffeeMachine.java

 

App.java

전략패턴이란?

추상적인 것에 의존 하는 것이다. 

위의 예로 보면 아메리카노,카페라떼가 있다면 이 두개를 묶어 "커피"라고 정의할 수 있다. 그럼 커피 라는 추상클래스를 만들어 이것들을 상속받아 사용 하는 것이다. 

 

전략패턴을 사용하면 얻을 수 있는 장점

1. OCP를 지킬 수 있다.

2. DIP를 지킬 수 있다.

DIP란? 의존관계 역전 원칙 ( 구체적인 것이 아닌 추상적인 부분에 의존 한다는 뜻이다.)

이제 위의 코드를 전략 패턴으로 수정

1. "커피" 라는 인터페이스를 생성

추상적인 것에 의존 하기 때문에 abstract로 실행 메서드 하나 생성. 

2. 아메리카노, 카페라떼는 Coffee를 상속 받는다. 

3. 기존엔 Coffee Machine에서 아메리카노, 카페라떼를 각각 호출해서 실행을 했다. -> 추상적인 Coffee로 수정

4.  App에서 실행

전략 패턴에서는 추상적인 것에 의존 하는 것을 중요하게 생각했다. 

아메리카노, 카페라떼 -> Coffee로 묶어서 추상적으로 만들어준 것

그럼 실행될 때 

App -> CoffeeMaChine -> Coffee -> 1. Americano 2. CafeLatte 3. Expresso  이렇게 된다.