아래 누가 클로저랑 전략패턴이 뭔상관이냐고 물어서 올림




누가 말했는지 아이피가 기억이 안나긴 하는데

클로저랑 전략패턴이랑 직접적인 연관은 없음


단, 전략패턴을 사용하는데 있어 클로저가 유용하게 쓰일수도 있다는 뜻이었다.

그래서 밑에 그래프 모듈 중 하나인 matplotlib(줄여서 plt)를 통해 구체적인 예시를 코드로 좀 더 설명하면


plt에서 그래프를 그릴때 x축 스타일을 정의해주는게 있음

날짜 포맷에 맞춰서 출력할수도 있고 미리 정의된 Formatter들을 사용할수도 있음 <- Strategy pattern의 한 예


이때 위와 같이 나는 모든 tick 뒤에 특정 문자열을 덧붙이고 싶다고 하면

두가지 방법이 있을텐데 하나는 클로저를 사용하지 않고


def foo_fomat~:

...


def bar_format~:

...


를 정의해서 이를 넘길수도 있지만, 코드가 너무 길어진다는 것. 동적인 생성이 불가능 하다는 것. 확장에 닫혀있고 수정에 열려있는 등등 문제가 생김


그래서 대신 클로저 팩토리를 생성해서 'foo' suffix를 가진 formatter를 얻고 싶으면 걍 get_suffix_formatter('foo')로 사용하면 되는거임


이미 한번 얘기했지만 또 다른 얘기가 나올까봐 미리 말하는데 이게 클로저 쓰임새의 전부란건 아님.