Strategy 패턴
어떤 문제를 해결하기 위한 핵심적인 지식 부분
[Structure & Control]
Strategy 가 아니라 그냥 자료구조가 그래서 저렇게 쓴거
객체는 두가지 측면이 있다
상태 → 프로퍼티
행동 → 메서드
[Strategy]
우리가 외재화 시키고 싶은 부분
상태와 행위는 분리 될 수 없다
Strategy
는
Structure
에서만 동작된다
특정 자료를 가지고있는 포인터가 있어야 로직이 제대로 동작한다
[Composition(합성)]
우리가 하고자 하는것
여러 객체를 합하여 다른 하나로 만드는 것을 말한다. 어떤 객체가 다른 객체의 일부분인 경우다. 자동차가 엔진, 트랜스미션, 헤드라이트 등으로 구성되는 것 같은 경우이다.
코드에서 객체를 뽑아내서 위임하자
Strategy
부분을 확인 했으면
Structure
상 어떤 관계를 가지고 있나 확인하고 이 코드를 객체로 다시 바꿔야한다
인터페이스나 클래스로 도출을 해야지 어떤 규격이 생길 수 있다 → 타입을 정의하자!
[Dependency]
Binder
는
Strategy
객체에 대한 의존성이 생긴다
객체 지향에서 의존성이 생기는 이유는 위임했기 때문이 아니라 내가 어떤 부분을 고칠때 코드를 안고치고 그냥 바깥에 두고 쓰기를 원했기 때문에 바깥의 객체와 의존성이 생긴다
[Dependency Injection]
내부에서 의존성 있는 서브타입을 만드는 경우가 있고 그냥 외부에서 주입받는 경우가 있다
내부에서 생성 하면 다시 하드코딩이라 변화하면서 코드를 건드는 측면에서 크게 다를게 없다
밖으로 빼서 안으로 넣는 순간
Dependency
과
Dependency Injection
이 자동으로 생긴다