SlideShare a Scribd company logo
SWIFT
Bridge
Bill Kim(김정훈) | ibillkim@gmail.com
목차
•Bridge
•Structure
•Implementation
•References
Bridge
Bridge(브릿지)패턴은 구현부에서 추상층을 분리하여 각자 독립적
으로 변형이 가능하고 확장이 가능하도록 하는 패턴입니다.
즉 기능과 구현에 대해서 두 개의 별도의 클래스로 구현을 할 수 있
도록 하는 구조 설계 관련 패턴입니다.
Bridge 패턴은 객체의 다중 상속 구조를 피하면서 독립적으로 확장
을 할 수 있도록 도와줍니다.
Bridge
Bridge 패턴을 UML로 도식화하면 아래와 같습니다.
Structure
Abstraction : 기능 계층의 최상위 클래스. 구현 부분에 해당하는
클래스를 인스턴스를 가지고 해당 인스턴스를 통해 구현부분의 메서
드를 호출합니다.
RefindAbstraction : 기능 계층에서 새로운 부분을 확장한 클래
스
Implementor : Abstraction의 기능을 구현하기 위한 인터페이
스 정의
ConcreteImplementor : 실제 기능을 구현합니다.
Structure
Bridge 패턴을 사용하면 아래와 같은 다중 상속 구조를 확장이 용
이하며 다중 상속을 피한 구조로 변경할 수 있습니다.
Implementation
구체적인 구현에 대해서 소스 코드를 통하여 살펴봅니다.
// Implementor
protocol Car {
// implementation()
func drive()
}
// ConcreteImplementor
class Sedan : Car {
// implementation()
func drive() {
print("Drive a sedan")
}
}
// ConcreteImplementor
class SUV : Car {
func drive() {
print("Drive a SUV")
}
}
Implementation
// Abstraction
protocol ColoredCar {
// implementor
var car: Car { get set }
// implementation()
func drive()
}
// RefinedAbstraction
class RedCar: ColoredCar {
// implementor
var car: Car
init(car: Car) {
self.car = car
}
// refinedFunction()
func drive() {
print("It's a red color sedan.")
// self.impl.implementation()
car.drive()
}
}
Implementation
let sedan = Sedan()
let redSedan = RedCar(car: sedan)
redSedan.drive()
// It's a red color sedan.
// Drive a sedan
References
[1] Bridge Pattern in Swift 4 : https://medium.com/
@iamcrypticcoder/bridge-pattern-in-swift-4-3472b56504b6
[2] Swift World: Design Patterns — Bridge : https://
medium.com/swiftworld/swift-world-design-patterns-
bridge-a20bbe999059
[3] Swift Solutions: Bridge Design Pattern : https://
swiftcraft.io/swift-bridge-design-pattern/
[4] Bridge in Swift : https://refactoring.guru/design-
patterns/bridge/swift/example
[5] A Design Pattern Story in Swift – Chapter 15: Bridge :
http://audreyli.me/2015/07/13/a-design-pattern-story-in-
swift-chapter-15-bridge/
References
[6] Bridge - Design patterns in Swift 2 : https://
www.youtube.com/watch?v=EOkWEv8rXHk
[7] 07 브릿지 패턴 (Bridge Pattern) : https://
lktprogrammer.tistory.com/35
[8] [Design Pattern] 브릿지(Bridge) 패턴 - 디자인 패턴 :
https://palpit.tistory.com/197
[9] [디자인패턴] bridge & adapter & mediator pattern :
https://flyburi.com/188
[10] #5 Bridge Pattern in C++(브릿지 패턴 C++) : https://
vallista.tistory.com/entry/5-Bridge-Pattern-in-C-브릿지-패
턴-C
Thank you!

More Related Content

More from Bill Kim

[Algorithm] Sorting Comparison
[Algorithm] Sorting Comparison[Algorithm] Sorting Comparison
[Algorithm] Sorting Comparison
Bill Kim
 
[Algorithm] Big O Notation
[Algorithm] Big O Notation[Algorithm] Big O Notation
[Algorithm] Big O Notation
Bill Kim
 
[Algorithm] Shell Sort
[Algorithm] Shell Sort[Algorithm] Shell Sort
[Algorithm] Shell Sort
Bill Kim
 
[Algorithm] Radix Sort
[Algorithm] Radix Sort[Algorithm] Radix Sort
[Algorithm] Radix Sort
Bill Kim
 
[Algorithm] Quick Sort
[Algorithm] Quick Sort[Algorithm] Quick Sort
[Algorithm] Quick Sort
Bill Kim
 
[Algorithm] Heap Sort
[Algorithm] Heap Sort[Algorithm] Heap Sort
[Algorithm] Heap Sort
Bill Kim
 
[Algorithm] Counting Sort
[Algorithm] Counting Sort[Algorithm] Counting Sort
[Algorithm] Counting Sort
Bill Kim
 
[Algorithm] Selection Sort
[Algorithm] Selection Sort[Algorithm] Selection Sort
[Algorithm] Selection Sort
Bill Kim
 
[Algorithm] Merge Sort
[Algorithm] Merge Sort[Algorithm] Merge Sort
[Algorithm] Merge Sort
Bill Kim
 
[Algorithm] Insertion Sort
[Algorithm] Insertion Sort[Algorithm] Insertion Sort
[Algorithm] Insertion Sort
Bill Kim
 
[Algorithm] Bubble Sort
[Algorithm] Bubble Sort[Algorithm] Bubble Sort
[Algorithm] Bubble Sort
Bill Kim
 
[Algorithm] Binary Search
[Algorithm] Binary Search[Algorithm] Binary Search
[Algorithm] Binary Search
Bill Kim
 
[Algorithm] Recursive(재귀)
[Algorithm] Recursive(재귀)[Algorithm] Recursive(재귀)
[Algorithm] Recursive(재귀)
Bill Kim
 
[Swift] Data Structure - AVL
[Swift] Data Structure - AVL[Swift] Data Structure - AVL
[Swift] Data Structure - AVL
Bill Kim
 
[Swift] Data Structure - Binary Search Tree
[Swift] Data Structure - Binary Search Tree[Swift] Data Structure - Binary Search Tree
[Swift] Data Structure - Binary Search Tree
Bill Kim
 
[Swift] Data Structure - Graph(BFS)
[Swift] Data Structure - Graph(BFS)[Swift] Data Structure - Graph(BFS)
[Swift] Data Structure - Graph(BFS)
Bill Kim
 
[Swift] Data Structure - Graph(DFS)
[Swift] Data Structure - Graph(DFS)[Swift] Data Structure - Graph(DFS)
[Swift] Data Structure - Graph(DFS)
Bill Kim
 
[Swift] Data Structure - Binary Tree
[Swift] Data Structure - Binary Tree[Swift] Data Structure - Binary Tree
[Swift] Data Structure - Binary Tree
Bill Kim
 
[Swift] Data Structure - Tree
[Swift] Data Structure - Tree[Swift] Data Structure - Tree
[Swift] Data Structure - Tree
Bill Kim
 
[Swift] Data Structure - Graph
[Swift] Data Structure - Graph[Swift] Data Structure - Graph
[Swift] Data Structure - Graph
Bill Kim
 

More from Bill Kim (20)

[Algorithm] Sorting Comparison
[Algorithm] Sorting Comparison[Algorithm] Sorting Comparison
[Algorithm] Sorting Comparison
 
[Algorithm] Big O Notation
[Algorithm] Big O Notation[Algorithm] Big O Notation
[Algorithm] Big O Notation
 
[Algorithm] Shell Sort
[Algorithm] Shell Sort[Algorithm] Shell Sort
[Algorithm] Shell Sort
 
[Algorithm] Radix Sort
[Algorithm] Radix Sort[Algorithm] Radix Sort
[Algorithm] Radix Sort
 
[Algorithm] Quick Sort
[Algorithm] Quick Sort[Algorithm] Quick Sort
[Algorithm] Quick Sort
 
[Algorithm] Heap Sort
[Algorithm] Heap Sort[Algorithm] Heap Sort
[Algorithm] Heap Sort
 
[Algorithm] Counting Sort
[Algorithm] Counting Sort[Algorithm] Counting Sort
[Algorithm] Counting Sort
 
[Algorithm] Selection Sort
[Algorithm] Selection Sort[Algorithm] Selection Sort
[Algorithm] Selection Sort
 
[Algorithm] Merge Sort
[Algorithm] Merge Sort[Algorithm] Merge Sort
[Algorithm] Merge Sort
 
[Algorithm] Insertion Sort
[Algorithm] Insertion Sort[Algorithm] Insertion Sort
[Algorithm] Insertion Sort
 
[Algorithm] Bubble Sort
[Algorithm] Bubble Sort[Algorithm] Bubble Sort
[Algorithm] Bubble Sort
 
[Algorithm] Binary Search
[Algorithm] Binary Search[Algorithm] Binary Search
[Algorithm] Binary Search
 
[Algorithm] Recursive(재귀)
[Algorithm] Recursive(재귀)[Algorithm] Recursive(재귀)
[Algorithm] Recursive(재귀)
 
[Swift] Data Structure - AVL
[Swift] Data Structure - AVL[Swift] Data Structure - AVL
[Swift] Data Structure - AVL
 
[Swift] Data Structure - Binary Search Tree
[Swift] Data Structure - Binary Search Tree[Swift] Data Structure - Binary Search Tree
[Swift] Data Structure - Binary Search Tree
 
[Swift] Data Structure - Graph(BFS)
[Swift] Data Structure - Graph(BFS)[Swift] Data Structure - Graph(BFS)
[Swift] Data Structure - Graph(BFS)
 
[Swift] Data Structure - Graph(DFS)
[Swift] Data Structure - Graph(DFS)[Swift] Data Structure - Graph(DFS)
[Swift] Data Structure - Graph(DFS)
 
[Swift] Data Structure - Binary Tree
[Swift] Data Structure - Binary Tree[Swift] Data Structure - Binary Tree
[Swift] Data Structure - Binary Tree
 
[Swift] Data Structure - Tree
[Swift] Data Structure - Tree[Swift] Data Structure - Tree
[Swift] Data Structure - Tree
 
[Swift] Data Structure - Graph
[Swift] Data Structure - Graph[Swift] Data Structure - Graph
[Swift] Data Structure - Graph
 

[Swift] Bridge

  • 3. Bridge Bridge(브릿지)패턴은 구현부에서 추상층을 분리하여 각자 독립적 으로 변형이 가능하고 확장이 가능하도록 하는 패턴입니다. 즉 기능과 구현에 대해서 두 개의 별도의 클래스로 구현을 할 수 있 도록 하는 구조 설계 관련 패턴입니다. Bridge 패턴은 객체의 다중 상속 구조를 피하면서 독립적으로 확장 을 할 수 있도록 도와줍니다.
  • 4. Bridge Bridge 패턴을 UML로 도식화하면 아래와 같습니다.
  • 5. Structure Abstraction : 기능 계층의 최상위 클래스. 구현 부분에 해당하는 클래스를 인스턴스를 가지고 해당 인스턴스를 통해 구현부분의 메서 드를 호출합니다. RefindAbstraction : 기능 계층에서 새로운 부분을 확장한 클래 스 Implementor : Abstraction의 기능을 구현하기 위한 인터페이 스 정의 ConcreteImplementor : 실제 기능을 구현합니다.
  • 6. Structure Bridge 패턴을 사용하면 아래와 같은 다중 상속 구조를 확장이 용 이하며 다중 상속을 피한 구조로 변경할 수 있습니다.
  • 7. Implementation 구체적인 구현에 대해서 소스 코드를 통하여 살펴봅니다. // Implementor protocol Car { // implementation() func drive() } // ConcreteImplementor class Sedan : Car { // implementation() func drive() { print("Drive a sedan") } } // ConcreteImplementor class SUV : Car { func drive() { print("Drive a SUV") } }
  • 8. Implementation // Abstraction protocol ColoredCar { // implementor var car: Car { get set } // implementation() func drive() } // RefinedAbstraction class RedCar: ColoredCar { // implementor var car: Car init(car: Car) { self.car = car } // refinedFunction() func drive() { print("It's a red color sedan.") // self.impl.implementation() car.drive() } }
  • 9. Implementation let sedan = Sedan() let redSedan = RedCar(car: sedan) redSedan.drive() // It's a red color sedan. // Drive a sedan
  • 10. References [1] Bridge Pattern in Swift 4 : https://medium.com/ @iamcrypticcoder/bridge-pattern-in-swift-4-3472b56504b6 [2] Swift World: Design Patterns — Bridge : https:// medium.com/swiftworld/swift-world-design-patterns- bridge-a20bbe999059 [3] Swift Solutions: Bridge Design Pattern : https:// swiftcraft.io/swift-bridge-design-pattern/ [4] Bridge in Swift : https://refactoring.guru/design- patterns/bridge/swift/example [5] A Design Pattern Story in Swift – Chapter 15: Bridge : http://audreyli.me/2015/07/13/a-design-pattern-story-in- swift-chapter-15-bridge/
  • 11. References [6] Bridge - Design patterns in Swift 2 : https:// www.youtube.com/watch?v=EOkWEv8rXHk [7] 07 브릿지 패턴 (Bridge Pattern) : https:// lktprogrammer.tistory.com/35 [8] [Design Pattern] 브릿지(Bridge) 패턴 - 디자인 패턴 : https://palpit.tistory.com/197 [9] [디자인패턴] bridge & adapter & mediator pattern : https://flyburi.com/188 [10] #5 Bridge Pattern in C++(브릿지 패턴 C++) : https:// vallista.tistory.com/entry/5-Bridge-Pattern-in-C-브릿지-패 턴-C