1 / 12

Design Pattern

Design Pattern. Strategy Pattern - 정연운 - . Strategy pattern. 전략 패턴 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다 . 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경 할 수 있다 . Strategy pattern. 오리 시뮬레이터 오리 오리의 행동 파악 . 꽥꽥 거리는 소리를 낸다 . 헤엄을 친다 . 상속을 통해서 다양한 오리를 만든다 . Strategy pattern. 요구 사항 추가

christmas
Download Presentation

Design Pattern

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Design Pattern Strategy Pattern - 정연운-

  2. Strategy pattern • 전략 패턴 • 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. • 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경 할 수 있다.

  3. Strategy pattern • 오리 시뮬레이터 • 오리 • 오리의 행동 파악. • 꽥꽥 거리는 소리를 낸다. • 헤엄을 친다. • 상속을 통해서 다양한 오리를 만든다.

  4. Strategy pattern • 요구 사항 추가 • 오리들이 날아 다닐 수 있어야 한다. • 해결 방안 • Duck 클래스에 fly() 추가. • 모든 오리들은 그것을 상속.

  5. Strategy pattern • 문제 발생 • 고무 오리가 날아다닌다?? • 해결 방안 ? • 고무 오리 클래스에서 fly() 오버라이드. • 나무 오리는???? 날수도 없고 소리도 내면 안 된다. 모든 함수를 오버라이드??

  6. Strategy pattern • 해결 방안 • 인터페이스로 구현. • Flyable, Quackable • 문제점? • Fly, Quack 행동에 대한 코드 재사용 불가(interface 에서는 코드 구현을 하지 않음) • 한 행동이 바뀌면 모든 서브 클래스 수정.

  7. Strategy pattern • 디자인 원칙 • 어플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리시킨다. • 바뀌는 부분은 따로 뽑아서 캡슐화 시킨다. • Duck 클래스 • Fly(), quack() 은 오리마다 달라지는 부분. • Duck 클래스에서 빼내서 각 행동을 나타내는 클래스 집합을 새로 만듬.

  8. Strategy pattern • 디자인 원칙 • 구현이 아닌 인터페이스에 맞춰서 프로그래밍한다. • 오리 행동 • FlyBehavior, QuackBehavior인터페이스.

  9. Strategy pattern • Duck 클래스 • flyBehavior, quackBehavior인터페이스 형식의 인스턴스 변수. • Fly(), quack() 대신 performFly(), performQuack() 추가. • flyBehavior, quackBehavior로 참조되는 객체에 행동 위임. • 세터 메소드를 추가하여 실행 중에도 행동을 바꿀 수 있게 한다.

  10. Strategy pattern • Duck 클래스 구조 • 오리의 행동 : 일련의 행동으로 생각하는 대신 알고리즘 군으로 생각. • 알고리즘 : 꽥꽥 거림, 날아다님. • 나는 행동과 꽥꽥거리는 행동 모두에 대해서 캡슐화된 알고리즘 군을 활용.

  11. Strategy pattern • 디자인 원칙 • 상속 보다는 구성을 활용한다. • 오리는 날아다닌다.(A 는 B 이다) • 오리는 날 수 있는 능력이 있다.(A 에는 B 가 있다) • 행동을 상속 받는 대신 올바른 행동 객체로 구성됨으로써 행동을 부여받음. • Strategy pattern • 알고리즘 군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. • 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경 할 수 있다.

  12. 감사합니다.

More Related