본문

160302P(월) - Head First Design Patterns (Strategy Pattern)

Head First Design Patterns - Strategy Pattern


스트레티지 패턴(Strategy Pattern)

· 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다.

· 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경 가능하다.


※ 소프트 웨어 개발에 있어서 항상 "변화" 를 염두해 두어야 한다.


디자인 원칙 [

애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리시킨다.


바뀌는 부분은 따로 뽑아서 캡슐화 시킨다. 그렇게 하면 나중에 바뀌지 않는 부분에는 영향을 미치지 않은 채로 그 부분만 고치거나 확장할 수 있다.

]


모든 패턴은 '시스템의 일부분을 다른 부분과 독립적으로 변화시킬 수 있는' 방법을 제공하기 위한 것.


디자인 원칙 [

· 구현이 아닌 인터페이스에 맞춰서 프로그래밍한다.


·  실제 실행시에 쓰이는 객체가 코드에 의해서 고정되지 않도록 어떤 상위 형식(supertype)에 맞춰서 프로그래밍함으로써 다형성을 활용해야 한다.

- 일반적

Dog d = new Dog();

d.bark();


- 개선

Animal animal = new Dog();

animal.makeSound();


- 더 개선

· 실행시에 구체적으로 구현된 객체를 동적으로 대입받게 만든다.


a = getAnimal();

a.makeSound();


→ 변수를 선언할 때는 보통 추상 클래스나 인터페이스 같은 상위 형식으로 선언해야 한다. 객체를 변수에 대입할 때 상위 형식을 구체적으로 구현한 형식이라면 어떤 객체든 집어넣을 수 있기 때문이다. 그렇게 하면 변수를 선언하는 클래스에서 실제 객체의 형식을 몰라도 된다.

]


디자인 원칙 [

· class (interface) 들을 합쳐 유연성있게 만드는 것을 composition을 이용하는 것 이라고 한다.

· 상속보다는 composition을 활용한다.

· composition을 이용하여 시스템을 만들면 유연성을 크게 향상시킬 수 있다.

]

공유

댓글