Design Pattern 4

DI(Dependency Injection)

DI(Dependency Injection)이란? 의존성을 객체 외부에서 주입해주는 형식 SOLID원칙중 DIP(의존성 역전 원칙)으로 특정 모듈에 의존하지 않고 의존성이 역전됨을 의미 상위모듈은 의존성 주입을 통해 하위 모듈에 의존하지 않고 구조 설계 가능 Dependency Injection이 적용되지 않은 경우 class Foo { private var bar: Bar init() { self.bar = Bar() } } Dependency Injection이 적용된 경우 class Foo { private var bar: Bar init(bar: Bar) { self.bar = bar } } DI가 필요한 이유 Interface를 통해 구체타입에 의존하지 않고(결합도↓) 상황에 따라 변경가능하고 ..

Design Pattern 2022.01.19

Delegate Pattern

Delegate Delegate(대리자, 위임자) 어떠한 객체가 다른객체에게 책임을 위임하는 것 iOS에선 보통 protocol을 사용하여 해당 객체의 일을 protocol을 채택하여 대신 수행한다.(순환참조 주의!) 객체간에 직접 참조해서 작업을 하는것 보다 delegate 패턴을 통해 객체간의 의존성과 책임을 줄일 수 있다. TextFieldDelegate 예시 TextField와 Label을 추가해 준뒤 ViewController에서 UITextFieldDelegate를 채택 viewDidLoad안에 textField.delegate.self(이부분이 TextField의 일을 위임하겠다는 뜻) 채택한 UITextFieldDelegate의 func중 textFieldShouldReturn함수를 정의 ..

Design Pattern 2021.12.14

Clean Architecture

Clean Architecture란 Robert C.Martin(Uncle-Bob)분이 블로그에 올린 아키텍처 중 하나이다. 프레임워크의 독립성, testable, UI의 독립성, Database의 독립성, 외부 로직에 대한 독립성 등 이런 여러 아키텍처의 장점을 하나로 모은 Clean Architecture를 만들어 소개 Dependency Rule 외부 원으로부터 화살표가 안으로 향하는 모습을 볼 수 있다. 바깥쪽일수록 상위모듈의 특성이고 안쪽일수록 하위 모듈의 특성을 가진다. Clean Architecture에서 중요시 하는 부분 중 하나가 화살표가 상위 모듈부터 안쪽인 하위 모듈만 의존하는 규칙이다. 안쪽의 모듈들은 바깥쪽의 모듈에 대해 어떤한것도 알 수 없다.(참조할 수 없다) FrameWork..

Design Pattern 2021.12.10

MVC Pattern

MVC? Model, View, Controller로 이루어진 구조 View와 Contoller, Model과 Contoller는 서로 통신하는 구조이지만, View와 Model은 서로 알지못하는 구조 Model 앱에서 필요한 데이터 담당 네트워크 데이터 persistence(DB, Core Data) Model -> Controller Model의 값이 변경 변경했음을 Notification Controller는 Notification받음 View 화면에 직접적으로 보이는 View 담당 UIKit에 의존적 View -> Controller View로부터 사용자 action발생 Delegate나 DataSource로 ViewController연결 Controller가 입력에 대한 처리 수행 Control..

Design Pattern 2021.12.10