본문
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을 이용하여 시스템을 만들면 유연성을 크게 향상시킬 수 있다.
]
'Architecture > 디자인 패턴' 카테고리의 다른 글
160214P(일) - Head First Disign Pattern (Factory Pattern) (0) | 2016.02.14 |
---|---|
160210P(수) - Head First Disign Pattern (Decorater Pattern) (0) | 2016.02.10 |
160209P(화) - Head First Disign Patterns (Observer Pattern) (0) | 2016.02.09 |
댓글