현재 진행하고 프로젝트의 신규 기능에 대해 설계를 진행하면서 다시 브릿지 패턴에 대해 찾아보다가 예전에는 모르고 지나갔던 부분이 걸려 인터넷을 찾아보았다.
브릿지 패턴을 자세히 보니 패턴의 기본인 Strategy 패턴과 동일한게 아닌가? 라는 의문이 들었다. 실제 UML의 모양도 비슷했다.
실제 두 차이점에 대해 찾아본 결과 차이점은 있었다.
(Stackoverflow 참조 : http://stackoverflow.com/questions/464524/what-is-the-difference-between-the-bridge-pattern-and-the-strategy-pattern)
즉 브릿지와 스트래지 패턴의 차이점은 스트래지는 행동을 브릿지는 구조의 decoupling를 의미했다.
이 말은 언뜻보기에는 명확하지만 도대체 행동과 구조의 차이점은 무엇일까라는 의문이 들었다. 답변 중의 내용을 좀더 살펴보았다.
행동이라는 것은 하나의 동작을 진행할 때 런타임 시점에서 사용자가 알맞는 알고리즘등을 선택하여 진행하는 것이며 구조는 인터페이스의 구조를 나누고 추상적인 참조를 통해 합치는 의미를 가지고 있다.
즉 스트래지 패턴은 사용자가 사용하고 싶은 정렬 알고리즘을 실행 중에 선택하여 진행할 수 있고 브릿지 패턴은 데이터베이스들의 api를 wrapper 클래스를 추상화 하여 클라이언트가 동일한 api로 같은 동작할 수 있도록 한다는 것이다.
정리.
스트레지 패턴 : 같은 결과이지만 다른 처리방식(알고리즘)을 수행
브릿지 패턴 : 하나의 동작을 추상화하여 서로 다른 구조(데이터베이스, 네트워크 등) 수행
브릿지 패턴을 자세히 보니 패턴의 기본인 Strategy 패턴과 동일한게 아닌가? 라는 의문이 들었다. 실제 UML의 모양도 비슷했다.
실제 두 차이점에 대해 찾아본 결과 차이점은 있었다.
(Stackoverflow 참조 : http://stackoverflow.com/questions/464524/what-is-the-difference-between-the-bridge-pattern-and-the-strategy-pattern)
The UML class diagram for the Strategy pattern is the same as the diagram for the Bridge pattern. However, these two design patterns aren't the same in their intent. While the Strategy pattern is meant for behavior, the Bridge pattern is meant for structure. The coupling between the context and the strategies is tighter than the coupling between the abstraction and the implementation in the Bridge pattern.
From wikipedia
즉 브릿지와 스트래지 패턴의 차이점은 스트래지는 행동을 브릿지는 구조의 decoupling를 의미했다.
이 말은 언뜻보기에는 명확하지만 도대체 행동과 구조의 차이점은 무엇일까라는 의문이 들었다. 답변 중의 내용을 좀더 살펴보았다.
행동이라는 것은 하나의 동작을 진행할 때 런타임 시점에서 사용자가 알맞는 알고리즘등을 선택하여 진행하는 것이며 구조는 인터페이스의 구조를 나누고 추상적인 참조를 통해 합치는 의미를 가지고 있다.
즉 스트래지 패턴은 사용자가 사용하고 싶은 정렬 알고리즘을 실행 중에 선택하여 진행할 수 있고 브릿지 패턴은 데이터베이스들의 api를 wrapper 클래스를 추상화 하여 클라이언트가 동일한 api로 같은 동작할 수 있도록 한다는 것이다.
정리.
스트레지 패턴 : 같은 결과이지만 다른 처리방식(알고리즘)을 수행
브릿지 패턴 : 하나의 동작을 추상화하여 서로 다른 구조(데이터베이스, 네트워크 등) 수행
'UML,OOP,Pattern, TDD' 카테고리의 다른 글
TDD - 계약에 의한 설계(DbC, Design by Contract) (0) | 2011.04.19 |
---|---|
TDD Tip (0) | 2011.04.19 |
객체지향 개발 관련 팁 (0) | 2011.04.19 |
객체지향 개발 원칙 (0) | 2011.04.19 |
UML Tip (0) | 2011.04.19 |