SlideShare a Scribd company logo
1 of 10
디자인패턴
Bridge
Cloud 기술개발팀 김범수
Bridge 패턴이란?
• 현실세계의 다리가 강 양쪽의 장소를 연결하는 열학이듯
Bridge패턴도 두 장소를 연결하는 역할을 함
• Bridge 패턴은 ‘기능의 클래스 계층’과 ‘구현의 클래스
계층’의 다리역할을 함.
• 서로 분리함으로써 변경되는 요구사항에 클래스의 확장을
하지 않고(파생 클래스의 증가 없이) 쉽게 해결 할 수 있다.
Birdge 패턴 구성요소
• 클래스의 인터페이스를 정의하는
추상화(Abstraction)
• 해당 인터페이스를 상속하고 구현하는
정제된 추상화(Refined Abstraction)
• 구현 클래스에 대한 인터페이스를 정의하는
구현자(Implementor)
• 구현 클래스인 ConcreteImplementor
Bridge 패턴 구조
기능계층 구현계층
새로운 기능을 추가하고 싶을 때 기능계층에 새로운 하위 클래스를 만들어
추가한다.
새로운 구현을 추가하고 싶을 때 새로운 구현(abstract, interface)를 추가한다.
두개를 나누지 않았다면??
• 클래스 계층이 하나라면 기능의 클래스 계층과
구현의 클래스 계층이 하나의 계층구조 안에
혼재하게됨.
• 사용자 코드가 플랫폼에 종속 됨. 사용자가
특정한 구현을 가진 구체 클래스를 인스턴화
해야 하는데, 이 특정한 구현이 바로 플랫폼에
종속적인 구현.
• 요구사항을 해결하다 보면 파생 클래스의
폭발적인 증가가 발생 할 수 있음.
Bridge 패턴을 안썼을 경우
유닛부분 코드
무기부분 코드
클라이언트가 사용할 때
요구사항 : 총 말고 레이져 무기를 든 마린도
추가해주세요
유닛부분 코드 무기부분 코드
Bridge 패턴 적용 코드
유닛부분 코드 (기능)
무기부분 코드 (구현)
클라이언트가 사용할 때
요구사항 : 총 말고 레이져 무기를 든 마린도
추가해주세요
무기부분 코드(구현부)
클라이언트가 사용할 때
기능계
층
구현계
층
Client
Client

More Related Content

Viewers also liked

PMI를 활용한 twitter 데이터에서의 이슈 키워드 추출
PMI를 활용한 twitter 데이터에서의 이슈 키워드 추출PMI를 활용한 twitter 데이터에서의 이슈 키워드 추출
PMI를 활용한 twitter 데이터에서의 이슈 키워드 추출Jo Hyun Je
 
3. basic data structures(2)
3. basic data structures(2)3. basic data structures(2)
3. basic data structures(2)Hongjun Jang
 
Problem Solving GuideBook
Problem Solving GuideBookProblem Solving GuideBook
Problem Solving GuideBookHongjun Jang
 
아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지YoungSu Son
 
Iterator Design Pattern
Iterator Design PatternIterator Design Pattern
Iterator Design PatternVarun Arora
 
객체지향 철학 그리고 5대 개념
객체지향 철학 그리고 5대 개념객체지향 철학 그리고 5대 개념
객체지향 철학 그리고 5대 개념중선 곽
 
소프트웨어의 동작 방식 이해
소프트웨어의 동작 방식 이해소프트웨어의 동작 방식 이해
소프트웨어의 동작 방식 이해중선 곽
 
국민대학교 컴퓨터프로그래밍
국민대학교 컴퓨터프로그래밍국민대학교 컴퓨터프로그래밍
국민대학교 컴퓨터프로그래밍Minsuk Lee
 
프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리
프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리
프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리중선 곽
 
Beyond Java: 자바 8을 중심으로 본 자바의 혁신
Beyond Java: 자바 8을 중심으로 본 자바의 혁신Beyond Java: 자바 8을 중심으로 본 자바의 혁신
Beyond Java: 자바 8을 중심으로 본 자바의 혁신Sungchul Park
 
컴퓨터 하드웨어 구조
컴퓨터 하드웨어 구조컴퓨터 하드웨어 구조
컴퓨터 하드웨어 구조dddddanbi
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개beom kyun choi
 
게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴MinGeun Park
 
프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법중선 곽
 
java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰Sungchul Park
 
객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)Seung-June Lee
 
Abstract factory pattern
Abstract factory patternAbstract factory pattern
Abstract factory patternminjin00
 
실생활에서 접하는 빅데이터 알고리즘
실생활에서 접하는 빅데이터 알고리즘실생활에서 접하는 빅데이터 알고리즘
실생활에서 접하는 빅데이터 알고리즘sujin oh
 

Viewers also liked (20)

PMI를 활용한 twitter 데이터에서의 이슈 키워드 추출
PMI를 활용한 twitter 데이터에서의 이슈 키워드 추출PMI를 활용한 twitter 데이터에서의 이슈 키워드 추출
PMI를 활용한 twitter 데이터에서의 이슈 키워드 추출
 
3. basic data structures(2)
3. basic data structures(2)3. basic data structures(2)
3. basic data structures(2)
 
Problem Solving GuideBook
Problem Solving GuideBookProblem Solving GuideBook
Problem Solving GuideBook
 
GoF의 디자인 패턴
GoF의 디자인 패턴GoF의 디자인 패턴
GoF의 디자인 패턴
 
아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지아키텍트가 알아야 할 12/97가지
아키텍트가 알아야 할 12/97가지
 
Iterator Design Pattern
Iterator Design PatternIterator Design Pattern
Iterator Design Pattern
 
객체지향 철학 그리고 5대 개념
객체지향 철학 그리고 5대 개념객체지향 철학 그리고 5대 개념
객체지향 철학 그리고 5대 개념
 
소프트웨어의 동작 방식 이해
소프트웨어의 동작 방식 이해소프트웨어의 동작 방식 이해
소프트웨어의 동작 방식 이해
 
국민대학교 컴퓨터프로그래밍
국민대학교 컴퓨터프로그래밍국민대학교 컴퓨터프로그래밍
국민대학교 컴퓨터프로그래밍
 
프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리
프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리
프로그래머가 알아야 하는 2진수 기반의 컴퓨터 동작 원리
 
Beyond Java: 자바 8을 중심으로 본 자바의 혁신
Beyond Java: 자바 8을 중심으로 본 자바의 혁신Beyond Java: 자바 8을 중심으로 본 자바의 혁신
Beyond Java: 자바 8을 중심으로 본 자바의 혁신
 
컴퓨터 하드웨어 구조
컴퓨터 하드웨어 구조컴퓨터 하드웨어 구조
컴퓨터 하드웨어 구조
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개
 
게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴
 
프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법
 
java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰java 8 람다식 소개와 의미 고찰
java 8 람다식 소개와 의미 고찰
 
객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)
 
Abstract factory pattern
Abstract factory patternAbstract factory pattern
Abstract factory pattern
 
실생활에서 접하는 빅데이터 알고리즘
실생활에서 접하는 빅데이터 알고리즘실생활에서 접하는 빅데이터 알고리즘
실생활에서 접하는 빅데이터 알고리즘
 
sungmin slide
sungmin slidesungmin slide
sungmin slide
 

Similar to Bridgepattern

[Swift] Template Method
[Swift] Template Method[Swift] Template Method
[Swift] Template MethodBill Kim
 
Reflection
ReflectionReflection
Reflectionscor7910
 
도메인 주도 개발 4장 도메인의 격리
도메인 주도 개발 4장 도메인의 격리도메인 주도 개발 4장 도메인의 격리
도메인 주도 개발 4장 도메인의 격리Choonghyun Yang
 
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법Sehyeon Nam
 
Design Pattern Introduction
Design Pattern IntroductionDesign Pattern Introduction
Design Pattern IntroductionBill Kim
 
[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계AnselmKim
 
Concurrent Programming (Java thread 다루기)
Concurrent Programming (Java thread 다루기)Concurrent Programming (Java thread 다루기)
Concurrent Programming (Java thread 다루기)JungGeun Lee
 

Similar to Bridgepattern (12)

Bridge
BridgeBridge
Bridge
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Uml 세미나
Uml 세미나Uml 세미나
Uml 세미나
 
[Swift] Template Method
[Swift] Template Method[Swift] Template Method
[Swift] Template Method
 
Reflection
ReflectionReflection
Reflection
 
도메인 주도 개발 4장 도메인의 격리
도메인 주도 개발 4장 도메인의 격리도메인 주도 개발 4장 도메인의 격리
도메인 주도 개발 4장 도메인의 격리
 
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
[GPG 스터디] 1.1 객체지향적 프로그래밍과 설계기법
 
Gpg 1.1
Gpg 1.1Gpg 1.1
Gpg 1.1
 
Design Pattern Introduction
Design Pattern IntroductionDesign Pattern Introduction
Design Pattern Introduction
 
[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계[스프링 스터디 1일차] 오브젝트와 의존관계
[스프링 스터디 1일차] 오브젝트와 의존관계
 
Bounded Context
Bounded ContextBounded Context
Bounded Context
 
Concurrent Programming (Java thread 다루기)
Concurrent Programming (Java thread 다루기)Concurrent Programming (Java thread 다루기)
Concurrent Programming (Java thread 다루기)
 

Bridgepattern

  • 2. Bridge 패턴이란? • 현실세계의 다리가 강 양쪽의 장소를 연결하는 열학이듯 Bridge패턴도 두 장소를 연결하는 역할을 함 • Bridge 패턴은 ‘기능의 클래스 계층’과 ‘구현의 클래스 계층’의 다리역할을 함. • 서로 분리함으로써 변경되는 요구사항에 클래스의 확장을 하지 않고(파생 클래스의 증가 없이) 쉽게 해결 할 수 있다.
  • 3. Birdge 패턴 구성요소 • 클래스의 인터페이스를 정의하는 추상화(Abstraction) • 해당 인터페이스를 상속하고 구현하는 정제된 추상화(Refined Abstraction) • 구현 클래스에 대한 인터페이스를 정의하는 구현자(Implementor) • 구현 클래스인 ConcreteImplementor
  • 4. Bridge 패턴 구조 기능계층 구현계층 새로운 기능을 추가하고 싶을 때 기능계층에 새로운 하위 클래스를 만들어 추가한다. 새로운 구현을 추가하고 싶을 때 새로운 구현(abstract, interface)를 추가한다.
  • 5. 두개를 나누지 않았다면?? • 클래스 계층이 하나라면 기능의 클래스 계층과 구현의 클래스 계층이 하나의 계층구조 안에 혼재하게됨. • 사용자 코드가 플랫폼에 종속 됨. 사용자가 특정한 구현을 가진 구체 클래스를 인스턴화 해야 하는데, 이 특정한 구현이 바로 플랫폼에 종속적인 구현. • 요구사항을 해결하다 보면 파생 클래스의 폭발적인 증가가 발생 할 수 있음.
  • 6. Bridge 패턴을 안썼을 경우 유닛부분 코드 무기부분 코드 클라이언트가 사용할 때
  • 7. 요구사항 : 총 말고 레이져 무기를 든 마린도 추가해주세요 유닛부분 코드 무기부분 코드
  • 8. Bridge 패턴 적용 코드 유닛부분 코드 (기능) 무기부분 코드 (구현) 클라이언트가 사용할 때
  • 9. 요구사항 : 총 말고 레이져 무기를 든 마린도 추가해주세요 무기부분 코드(구현부) 클라이언트가 사용할 때