요약
- 디자인 패턴 소개와 전략 패턴 (계속)
- 동적으로 행동 지정하기
- 캡슐화된 행동 살펴보기
- 두 클래스를 합치는 방법
- 첫 번째 디자인 패턴: 전략 패턴
- 디자인 패턴 만나기
- 패턴과 전문 용어
- 디자인 패턴 사용법
- 디자인 도구상자 안에 들어가야 할 도구들
메모
동적으로 행동 지정하기
- Duck 서브클래스에서 세터 메서드를 호출하도록 설정한다.
캡슐화된 행동 살펴보기
- Duck의 행동 집합 클래스로 분리하여 캡슐화함.
두 클래스를 합치는 방법
- “A에는 B가 있다” 관계와 같이 두 클래스를 합치는 것을
구성(composition)
을 이용한다고 부름.
- Duck 클래스의 경우, 행동을 상속받는 대신, 올바른 행동 객체로 구성되어 행동을 부여받음.
- 이
구성
은 매우 중요한 테크닉이자, 세 번째 디자인 원칙임.
📍 세 번째 디자인 원칙 : 상속보다는 구성을 활용한다.
- 구성을 활용해서 시스템을 만들면 유연성을 크게 향상시킬 수 있음.
- Duck의 예시에서 봤던것과 같이 알고리즘군을 별도의 클래스 집합으로 캡슈로하할 수 있음.
- 구성 요소로 사용하는 개체에서 올바른 행동 인터페이스를 구현하기만 하면 실행 시에 행동을 바꿀 수도 있음.
첫 번째 디자인 패턴: 전략 패턴
- 지금까지가 첫번째 디자인 패턴을 적용한 것임.
- 바로
전략 패턴
.
- SimUDuck 애플리케이션으로 분리할때 전략 패턴을 활용함.
📍 전략 패턴(Strategy Pattern) : 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해줌. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있음.
디자인 패턴 만나기
- 디자인 패턴은 개발자 사이에 서로 모두 이해할 수 있는 용어를 제공함.
- 이 용어를 통해 개발자와 더 쉽게 대화할 수 있음.
- 패턴으로 소통하면 일상어로 구구절절 말할 때보다 훨씬 효율적인 의사소통이 가능함.
- 객체 수준의 생각이 아닌, 패턴 수준에서 생각할 수 있기에 아키텍처를 생각하는 수준을 끌어 올릴 수 있음.
패턴과 전문 용어
- 서로 알고 있는 패턴은 정말 막강함.
- 패턴을 사용하면 간단한 단어로 많은 얘기를 할 수 있음.
- 패턴 수준에서 이야기하면 ‘디자인’에 더 오랫동안 집중할 수 있음.
- 전문 용어를 사용하면 개발팀의 능력을 극대화할 수 있음.
- 전문 용어는 신입 개발자에게 훌륭한 자극체가 됨.
디자인 패턴 사용법
- 라이브러리, 프레임워크만으로는 관리하기 쉽고 유연한 방법의 애플리케이션 구조를 만드는데 도움을 주지 못함.
- 디자인 패턴은 코드로 바로 들어가는게 아니라 머릿속으로 먼저 들어감.
- 패턴을 완전히 익혀두면 어떤 코드가 유연성 없는지 금방 깨달을 수 있고, 그 코드를 수정할 때, 패턴을 적용해서 코드를 개선할 수 있음.
- 객체지향의 기본만 알면 유연하고 재사용이 용이하고, 관리하기 쉬운 시스템을 쉽게 만들 수 있다고 생각하는데..
- 그렇지 않음. 이러한 장점을 가진 객체 지향 시스템을 구축하는 일은 간단하지 않음. 상당한 노력이 필요.
- 이러한 객체지향 시스템 구축 방법을 모아서 디자인 패턴을 만든것임.
- 패턴을 찾을 수 없다면?
- 패턴의 밑바탕에있는 객체지향 패턴을 생각해본다.
- ex) 추상화, 캡슐화 …
- 관리가 용이한 객제지향 시스템을 만드는 비결 → “나중에 어떻게 바뀔 것인지” 생각해본다.
- 지금까지 배운 원칙은 이러한 내용이 담겨있음.
디자인 도구상자 안에 들어가야 할 도구들
- 객체지향 기초
- 객체지향 원칙
- 바뀌는 부분은 캡슐화한다.
- 상속보다는 구성을 활용한다.
- 구현보다는 인터페이스에 맞춰서 프로그래밍한다.
- 객체지향 패턴
- 전략 패턴
- 알고리즘군을 정의하고 캡슐화한다.
- 각각의 알고리즘 군을 수정해서 쓸 수 있게 해줌.
- 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있음.
댓글