7. 가교 패턴(Bridge Pattern)
가교 패턴은 추상적 개념과 구체적 구현 사이의 종속성을 제거하여 목적에 맞게 다양한 구현 방법을 사용하도록 제공하는 패턴입니다. 프로그램하다 보면 일반화 관계로 설계하였을 때 기반 클래스에서 파생하는 클래스가 너무 많아지는 경우가 발생합니다. 그리고 다시 파생 클래스를 기반으로 하는 파생 클래스가 많아지는 경우도 발생하지요.
예를 들어, 사람이라는 기반 클래스가 있다고 가정합시다. 그리고 사람에서 파생한 학생과 학부모, 강사 등이 있습니다. 학생 중에는 피아노를 칠 수 있는 학생과 야구를 할 줄 아는 학생, 피아노와 야구를 할 줄 하는 학생 등이 있을 수 있겠죠. 학부모와 강사도 마찬가지일 것입니다. 이를 일반화 관계로 표현하다 보면 파생되는 계층도 깊어지고 구현해야 할 파생 클래스의 수도 너무 많아지게 됩니다. 이 같은 경우에 야구를 하는 것과 피아노를 치는 것처럼 구체적인 구현을 분리하는 것입니다. 그리고 학생 개체가 구체적 구현으로 분리된 피아노를 치는 개체를 포함하여 피아노를 치는 학생을 만들 수도 있고 야구를 하는 개체를 포함하여 야구를 하는 학생을 만들 수도 있게 됩니다. 물론, 학생 개체에 피아노를 치는 개체와 야구를 하는 개체를 포함하면 피아노와 야구를 할 수 있는 학생이 되겠죠. 학부모 개체에 피아노를 치는 개체를 포함하면 피아노를 칠 수 있는 학부모가 됩니다. 즉, 추상적 개념에 해당하는 부분은 기반 클래스 사람과 파생 클래스 학생, 학부모, 강사로 관계를 정의하고 구체적 구현에 해당하는 부분은 분리해서 정의하는 것입니다.
가교 패턴에서는 추상적 개념에 대해서 기반 클래스와 파생 클래스를 제공하면서 동시에 구체적 구현에 대해서도 기반 클래스와 파생 클래스를 제공하는 형태를 지니게 됩니다. 그리고 추상적 개념을 표현한 클래스의 멤버로 구체적 구현을 한 개체를 포함하게 구현을 합니다. 그리고 추상적 개념을 표현한 클래스의 인터페이스에서는 포함하고 있는 구체적 구현된 개체를 이용하는 구조를 지니게 됩니다. 이를 통해 추상적 개념과 구체적 구현 사이에 종속성이 제거되어 다양한 구현 방법을 사용할 수 있게 해 줍니다.
2016/04/26 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 가교 패턴(Bridge Pattern) - 개요, 시나리오
2016/04/26 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#} 가교 패턴(Bridge Pattern) - 설계(Design)
2016/04/26 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 가교 패턴(Bridge Pattern) - 구현
'프로그래밍 기술 > Escort GoF의 디자인 패턴 C#' 카테고리의 다른 글
[소프트웨어 설계 패턴 C#] 12. 프락시 패턴(Proxy Pattern) - 원격지 프락시 (0) | 2016.04.17 |
---|---|
[소프트웨어 설계 패턴 C#] 11. 플라이급 패턴(Flyweight Pattern) (0) | 2016.04.17 |
[C#] 퍼사드 패턴(Facade Pattern) (0) | 2016.04.07 |
[C#] 장식자 패턴(Decorator Pattern) (0) | 2016.04.07 |
[C#] 복합체 패턴(Composite Pattern) (0) | 2016.04.07 |
[C#] 적응자 패턴(Adapter Pattern) (0) | 2016.04.07 |
[C#] 단일체 패턴(Singleton Pattern) (0) | 2016.04.07 |
[C#] 원형 패턴(Prototype Pattern) (0) | 2016.04.06 |
[C#] 팩토리 메서드 패턴(Factory Method Pattern) (0) | 2016.04.06 |
[C#] 빌더 패턴(Builder Pattern) (0) | 2016.04.06 |