상위 인터페이스를 구현한 하위구현클래스들에서 일부에서만 필요한 기능을 구현해야할때는 상위 인터페이스에 메서드를 추가하면안됨
만약 그런식으로 만들면 상위에다가 일부클래스만 쓸 메서드api를 추가했다고,모든 하위클래스를 확인해야함(변경이 퍼져나감)
그래서 달라질부분과 달라지지않을부분을 찾아내고 분리해야함,즉 바뀌는부분은 따로 뽑아서 캡슐화하면,바뀌지않는 부분에는 영향을 미치지않고 그 부분만 고치거나 확장할수있음
이때 사용할수있는게 전략패턴임
이건 해당 달라질부분을 따로 떼어낸다음에 인터페이스와 구현집합으로 만든다음,원래 추상클래스에서 합성으로 떼어낸 인터페이스를 필드로 받는거임
여기서 구현집합에서는 해당행위를 하는것과,아무것도 하지않는거 등등을 만들어두면됨
그리고나서 해당 추상클래스를 구현하면서 자기에 맞는 변경인터페이스를 구현한 구현체를 생성자에서 생성하거나 di받으면됨(세터열어두고 바꿔도되고)
즉 전략패턴은,알고리즘을 캡슐화해서 각각의 알고리즘을 쉽게 바꿔끼울수있고,변경에 영향을 받지않게 만드는 패턴임
즉 이걸 사용하면 클라이언트로 부터 알고리즘을 분리해서 독립적으로 변경할수있음
'CS > 디자인패턴' 카테고리의 다른 글
커맨드(command) 패턴 (0) | 2024.07.17 |
---|---|
싱글톤(singleton) 패턴 (0) | 2024.07.16 |
팩토리(Factory) 패턴 (0) | 2024.07.14 |
데코레이터(Decorator) 패턴 (0) | 2024.07.13 |
옵저버(observer) 패턴 (0) | 2024.07.12 |