SlideShare a Scribd company logo
1 of 7
브릿지 패턴
Bucketplace 신부설
bsscco@gmail.com
브릿지 패턴은
클래스의 일부분을 다른 클래스로 빼내어 관리하고 싶을 때 사용합니다.
위키를 보면 추상층과 구현층을 분리한다고 하는데 저는 이 설명이 직관적으로 와
닿지 않았습니다. 추상층과 구현층이라는 단어는 풀이하는 사람에 따라 다른 부분
을 생각할 수 있다고 봐요.
저는 클래스의 일부분을 다른 클래스로 빼내어 관리하고 싶을 때 사용하는 패턴이
라고 정의하겠습니다.
RedMan
say()
walk()
eat()
<<interface>>
Man
say()
walk()
eat()
BlueMan
say()
walk()
eat()
GreenMan
say()
walk()
eat()
구현한다.
Client
사용한다.
브릿지 패턴 없이
System.out.print(“rrrr”)
System.out.print(“bbbb”) System.out.print(“ggggg”)
구현한다.
Implementor
Concrete
Implementor
RedSayImpl
say()
<<interface>>
SayImplementor
say()
BlueSayImpl
say()
GreenSayImpl
say()
Man
sayImpl : SayImpl
say()
walk()
eat()
Man이 SayImpl
을 사용한다.
Abstraction
sayImpl.say()
Client
사용한다.
브릿지 패턴을 사용해서
System.out.print(“rrrr”)
System.out.print(“bbbb”) System.out.print(“ggggg”)
솔직한 후기 - 왜 쓰나요?
브릿지 패턴의 구조는 앞에서 봤던 어댑터 패턴의 객체 어댑터의 구조와 다르지 않
습니다.
하지만 ‘사용 용도’가 다르기 때문에 용도에 따라 맞는 명칭을 사용해야 의사소통
할 때 문제가 없을 거라 생각합니다. (저도 언제부턴가 헷갈려서 브릿지 패턴을 어댑터 패턴이라고 불러왔
어요.)
어댑터 패턴은 기존 클래스를 다른 사용자(클래스를 사용자)가 원하는 사용방법으
로 맞추어줄 때 사용하고,
브릿지 패턴은 클래스의 일부분을 다른 클래스로 빼내어 관리하고 싶을 때 사용합
니다.
솔직한 후기 - 왜 쓰나요?
브릿지 패턴의 장점은 여러가지가 있습니다. 그 중에서 제가 겪어본 장점을 예로 들
겠습니다.
저는 브릿지 패턴을 애용합니다. 관심사의 분리와 재활용 때문입니다. 클래스를 작
성하다보면 크기가 점점 커져서 감당하기 어려워질 때가 있습니다. 특히 MVC에서
컨트롤러 역할을 맡고 있는 클래스가 그래요. 이때 여러 컨트롤러에서 중복으로 쓰
일 만한 기능을 하나의 클래스로 빼냅니다. 이게 브릿지 패턴의 간단한 예입니다.
기타. 빼낸 클래스를 인스턴스화 시켜서 가지고 있을 필요가 없다면 싱글톤 패턴으
로 만들어서 유틸 클래스라고 부르며 사용하면 됩니다.
잘못 설명한 부분이나 부족한 부분에 대
해 보완해주실 분은 나눠주세요.

More Related Content

More from Booseol Shin

안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (2)
안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (2)안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (2)
안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (2)Booseol Shin
 
안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (1)
안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (1)안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (1)
안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (1)Booseol Shin
 
초보 블로그 쇼핑몰 만들기
초보 블로그 쇼핑몰 만들기초보 블로그 쇼핑몰 만들기
초보 블로그 쇼핑몰 만들기Booseol Shin
 
머터리얼 디자인 문서 개인적인 번역
머터리얼 디자인 문서 개인적인 번역머터리얼 디자인 문서 개인적인 번역
머터리얼 디자인 문서 개인적인 번역Booseol Shin
 
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1Booseol Shin
 
안드로이드에서 플러리를 쉽게 사용하기
안드로이드에서 플러리를 쉽게 사용하기안드로이드에서 플러리를 쉽게 사용하기
안드로이드에서 플러리를 쉽게 사용하기Booseol Shin
 
캡셔네이터 사용자 가이드
캡셔네이터 사용자 가이드캡셔네이터 사용자 가이드
캡셔네이터 사용자 가이드Booseol Shin
 
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오Booseol Shin
 
03.GitHub으로 웹페이지
03.GitHub으로 웹페이지03.GitHub으로 웹페이지
03.GitHub으로 웹페이지Booseol Shin
 

More from Booseol Shin (9)

안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (2)
안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (2)안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (2)
안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (2)
 
안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (1)
안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (1)안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (1)
안드로이드 머터리얼 디자인 기반의 앱 레이아웃 가이드 (1)
 
초보 블로그 쇼핑몰 만들기
초보 블로그 쇼핑몰 만들기초보 블로그 쇼핑몰 만들기
초보 블로그 쇼핑몰 만들기
 
머터리얼 디자인 문서 개인적인 번역
머터리얼 디자인 문서 개인적인 번역머터리얼 디자인 문서 개인적인 번역
머터리얼 디자인 문서 개인적인 번역
 
Ubuntu에서 Flask개발 맛보기 - 1
Ubuntu에서  Flask개발 맛보기 - 1Ubuntu에서  Flask개발 맛보기 - 1
Ubuntu에서 Flask개발 맛보기 - 1
 
안드로이드에서 플러리를 쉽게 사용하기
안드로이드에서 플러리를 쉽게 사용하기안드로이드에서 플러리를 쉽게 사용하기
안드로이드에서 플러리를 쉽게 사용하기
 
캡셔네이터 사용자 가이드
캡셔네이터 사용자 가이드캡셔네이터 사용자 가이드
캡셔네이터 사용자 가이드
 
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오
우분투에서 안드로이드 개발환경 갖추기 ; 안드로이드 스튜디오
 
03.GitHub으로 웹페이지
03.GitHub으로 웹페이지03.GitHub으로 웹페이지
03.GitHub으로 웹페이지
 

Recently uploaded

Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 

Recently uploaded (6)

Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 

2017-07-10 브릿지 패턴