CH06 스프링이 사랑한 디자인 패턴
이 챕터에서는 크게 정리할 부분이 없었다. 간단히 몇 개의 패턴만 소개하는 식의 내용이었다. 다만 문득 어댑터 패턴과 프록시 패턴이 큰 차이를 명확히 해 둘 필요가 있는 것 같아서 여기서는 이것만 정리한다.
어댑터 패턴과 프록시 패턴은 모두 '퍼사드' 라는 개념을 공유하며, 클라이언트와 타겟 사이에 인터페이스를 제공합니다. 그러나 이 두 패턴은 목적과 구현 방식에서 차이점이 있습니다.
어댑터 패턴: 이 패턴은 두 개의 서로 다른 인터페이스를 맞춰주는 역할을 합니다. 예를 들어, 어떤 라이브러리의 인터페이스가 프로젝트에 적합하지 않을 때, 어댑터를 사용해 기존 코드에 맞춰줄 수 있습니다.
프록시 패턴: 프록시 패턴은 객체에 대한 접근을 제어하는 역할을 합니다. 이는 보안, 레이지 로딩, 로깅 등 다양한 목적으로 사용될 수 있습니다.
어댑터는 '형식을 맞추는' 목적이 강하고, 프록시는 '접근을 제어하는' 목적이 강합니다. 둘 다 중간에 존재하긴 하지만, 그 목적과 사용되는 상황이 다릅니다.
둘다 결국 클라이언트가 직접 통신하는 레이어가 있고, 그 레이어 뒷편으로 필요한 처리가 된다는 '퍼사드' 하다는 측면은 동일하지만 목적이 조금 다르다.
어댑터는 정말 그 레이어가 아니면 쓰고자 하는 객체를 쓸 수 없으니 쓰는 것이다. 한편 프록시의 경우 추가적인 처리 등을 위해서 일부러 끼워서 대리자를 호출하는 것이다.
지금 백기선님 디자인 패턴 강의를 듣다가 잠시 멈췄는데 빨리 완강을 해야겠다는 생각이 든다.
cf. 퍼사드 어원
"퍼사드(Facade)"라는 단어는 프랑스어에서 유래하였고, 이어서 영어에도 넘어왔습니다. 원래의 프랑스어 'façade'는 '건물의 정면'이라는 뜻입니다. 이 개념이 디자인 패턴에 적용될 때, 퍼사드 패턴은 복잡한 내부 시스템에 대한 '정면' 또는 '외관'을 제공하는 것으로 해석될 수 있습니다.
즉, 퍼사드 패턴은 복잡한 시스템의 내부 구조를 숨기고 사용자나 클라이언트에게는 단순한 인터페이스를 제공하는 역할을 합니다. 건물의 정면처럼, 복잡한 내부 구조를 보지 않아도 주요 기능을 이해하고 사용할 수 있게 해주는 것이죠. 이러한 비유를 통해 '퍼사드'라는 이름이 붙은 것으로 보입니다.
Last updated