오늘은 다른 방식으로 이 패턴을 이해하려고합니다. 이 패턴은 생각보다 구현이 단순하기 때문에 이해하는데 오히려 걸림돌이 되는 그런 패턴인것 같습니다. 그럼에도 그냥 한번 해보겠습니다. 오늘은 제가 직접 예제를 만들지 않고 유튜버 이야기'sG님의 코드를 분석하는 시간을 가져볼까합니다. 컴포짓트? 이건 과연 뭘까요? 컴포짓트는 한글로 혼합물이라는 뜻이라고 합니다. 혼합물의 가장 큰 특징은 2개 이상의 액체를 섞었다는 것이 그 특징입니다. 액체를 섞게되면 뭐가 섞였는지 잘 모릅니다. 하지만 저희는 액체를 섞고 싶은게 아닙니다. 저희가 섞고 싶은 건 객체입니다. 하지만 객체는 액체와 달리 섞는 방법이 정해져 있지 않습니다. 그래서 디자인 패턴에서 사용한 방법이 바로 트리로 만드는 것입니다. 물론, 자료구조의 트..
Observer 관측자라는 뜻으로 옵저버 패턴, 종속자 패턴, 게시-구독 패턴이라고 한다. 사실 이 패턴을 처음 접했을때는 단순히 난해하다고만 생각했다. 왜냐하면 옵저버 패턴의 가장 큰 특징중 하나가 객체의 느슨한 결합인데... 이것에 의미를 정확하게 인지하지 못하고 있었다. 정확하지는 않지만... 아마 직접 구현이아닌 인터페이스로 만들어서 결합도를 낮추는 방법인듯 싶다. 아무래도 인터페이스로 인스턴스를 만들게 되면 선택지가 많아지기 때문에 아마 맞는것 같다. 해드 퍼스트 디자인 패턴 책에서는 이 패턴을 설명할때, 신문과 구독이라는 주제로 설명했다. 신문사는 여러 종류가 있다. A 신문사, B신문사, C신문사... 등등 하지만 여기에서는 A신문사만 존재한다고 가정하자. 보통 신문사에는 구독자가 있다. 즉..
퍼사드? 그게 뭔데 패턴으로 붙여 놨을까? 이것 부터 알아야할듯 싶다. 완벽하게 일치는 안해도 퍼사드 하면 떠오르는 이미지가 있는게 좋지 않을까? 퍼사드는 건물의 정면을 말한다고 한다. 어떻게 보면 이름을 잘지은 패턴이라고 할 수도 있겠다. 퍼사드 패턴은 객체지향의 최소 지식 원칙을 준수한다고 한다. 최소 지식 원칙이라는게 무엇일까? 여기서 말하는 지식은 도대체 뭘까? 내가 생각할 때, 사람의 지식은 아닌것 같다는 느낌이 든다. 이게 무슨 말이냐면... 보통 지식은 많은 것을 아는 것을 뜻한다. 하지만 객체지향의 지식은 조금 다르게 해석 되는것 같다. 바로 클래스의 연결로 결정된다. 이게 무슨 말이냐면 A,B클래스가 있다고 가정하자. 또, A클래스는 B클래스와 연결이 되어있다. 이 정도가 최소 지식 원칙..
브릿지 패턴..... 이것도 어뎁터와 마찬가지로 떠오르는 이미지가 있을거다. 바로 이런 다리 이미지를 떠올릴 것이다. 물론 동물의 다리를 떠올리는 분도 있겠지만 말이다. 근데.. 나는 잘 모르겠다. 왜 이름이 브릿지인지에 대해 전혀 감이 잡히지 않고 있다. 어째든 브릿지 패턴의 가장 큰 특징은 구현과 기능을 분리한다는 점에 있다. 이걸 따로 공부했을때는 아 그렇구나 라고 느꼈는데, 구현과 기능을 합쳐서 내가 아는 구현이 맞는 구현인가라는 착각이 들기도 한다. 결론부터 말하면 내가 생각한 구현이 맞다. 다만, 기능을 분리한다는데 구현에는 뭐가 들어있는 걸까? 구현을 하면 당연히 구현안에도 기능이 있을 텐데.... 왜 이걸 구현과 기능의 분리라 한것일까? 사실 분리하는 기능은 기본 기능은 제외된거였다. 예를..
어댑터라고 하면 제일 먼저 생각나는 건 대충 이런 이미지를 생각한다. 그럼 어댑터라는건 어떤 역할을 하는 걸까? 일상생활에서의 어댑터는 전기를 변환하는데 사용이 된다. 가령, 소켓(플러그를 꼽는 곳)은 220V를 사용되는데, 사용하는 전자기기가 사용하는 V는 110V를 사용한다고 한다. 이 두개가 호환성이 맞지않기 때문에 전력은 들어오지 않는다. 이때 필요한것이 바로 어댑터다. 어댑터를 이용하면 220V라는 전력을 110V로 바꿔준다. 어떻게 보면 컨버터랑 비슷하지만.. 뭐 이건 전기 수업이 아니므로 넘어가도록 하자. 또, 내가 전기를 잘 아는게 아니기 때문에 틀리게 말할 수 도 있다. 하지만 하나 확실한건 호환되지 않는 두 장치를 연결시켜준다는 점은 변함이 없다. 즉, 두개가 호환이 되게 해주는 역할을..