어쩌다 보니 내 수준보다 더 높고 높은 책을 읽고 있다.
'클린 아키텍처' 라는 책인데 매번 '아키텍처'라는 단어는 사용하면서도 정작 제대로 알고 사용은 하는건지 의문이 들 때가 있다.
따라서 이번에는 확실히 개념을 잡고 넘어가리라는 마음을 먹고 읽지만 이내 졸립고 따분하고 어렵고 그렇다.
3부 설계 원칙의 '단일 책임 원칙' 부분을 읽으면서 제시된 해결책으로 '퍼사드 패턴'을 이해하고 넘어가자는 의도에서 책과 구글링을 통해 개념을 익혀보기로 했다.
실제 업무중에 적용한 사례가 있나 곰곰히 떠올려보지만 기억이 잘 나지 않는다. 또 어디에 어떻게 이 패턴을 적용해볼까도 고민했지만 막연하기만한데...
퍼사드 패턴은 다음과 같이 정의된다.
/*
* 퍼사드(Facade)란 프랑스어 Facade에서 유래된 단어로 건물의 외관이라는 뜻을 가지는다.
* (건물의 외부에서 보면 안의 구조는 보이지 않는다)
* 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공한다.
* 퍼사드 패턴에서 고수준 인터페이스를 정의하기 때문에 서브시스템을 더 쉽게 사용할 수 있도록 한다.
*/
어떤 분의 블로그에서는 전자레인지를 예로 퍼사드 패턴을 구현한 내용도 있으며 어떤 분은 홈시어터로 구현하신 분들도 있었다. 보면서 내가 일하는 곳에서 퍼사드 패턴을 적용할 수 있는 기능?이나 인터페이스?는 어떤 것이 있을까 고민하게 되었다.
구현된 코드를 보면서 눈에 익은 부분도 있는거로 바서 우연찮게 퍼사드 패턴을 사용하고 있는건 아닌가? 하는 생각도 들었는데... 지금까지 구현은 차치하고, 앞으로는 많은 고민을 해서 프로그램을 설계하고 구현해보는 노력을 해야겠다는 생각이다.
정의된 바와 같이 서브시스템의 인터페이스를 대신할 수 있는 통합된 인터페이스를 제공하는 역할을 하는 패턴이 퍼사드 패턴이고 이런 패턴에서 지켜져야 하는 '최소 지식 원칙(데메테르의 원칙, Law of Demeter)' 에 대한 규칙은 다음과 같다.
<정말 관련있는 객체와만 관계를 맺어라>
- 객체 자신
- 메서드의 매개변수로 전달된 객체
- 메서드에서 생성하거나 인스턴스를 만든 객체
- 해당 객체의 구성요소
'프로그래밍' 카테고리의 다른 글
함수를 어떻게 짜죠? -클린코드 중- (0) | 2022.02.04 |
---|---|
OCP, 추이 종속성(transitive dependency) (0) | 2020.11.03 |
프로그래밍을 학습하는 방법 (0) | 2020.10.16 |
주석문 (0) | 2020.10.14 |
클래스의 구분. (0) | 2020.07.09 |