We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
의존성 주입은 Swift에서만 등장하는 것이 아님
객체 지향 프로그래밍에서 Dependency, 의존성은 서로 다른 객체 사이에 의존 관계가 있다는 것을 말함
즉, 의존하는 객체가 수정되면, 다른 객체도 영향을 받음
import UIKit struct Eat { func coffee() { print("아메리카노") } func meal() { print("피자") } } struct Person { var todayEat: Eat func coffee() { todayEat.coffee() } func meal() { todayEat.meal() } }
Person 객체는 Eat 객체 를 인스턴스로 사용하고 있고, Eat 객체에 의존성이 생김
Person 객체
Eat 객체
이때, Eat 객체에 중요한 수정이나 오류가 발생한다면, Person 객체에도 영향이 감
의존성을 가지는 코드가 많아 진다면, 재사용성이 떨어지고, 매번 의존성을 가지는 객체들을 함께 수정해줘야 함
이러한 의존성을 해결하기 위해 나온 것이 Dependency Injection, 의존성 주입임
주입은 외부에서 객체를 생성해서 넣는 것을 의미
class Eat: Menu { var coffee: String var meal: String init(coffee: String, meal: String) { self.coffee = coffee self.meal = meal } func printCoffee() { print("아메리카노") } func printMeal() { print("피자") } } let menu = Eat(coffee: "아메리카노", meal: "피자")
해당 방식처럼 생성자를 활용해서 외부에서 주입할 수 있음 ㅇㅇ
하지만 의존성을 주입하는 것 만으로 의존성 주입이라고 하지 않음
의존 관계 역전 법칙에 대해 알아야 함
의존성 주입에서 의존성 분리는 의존 관계 역전 법칙으로 의존 관계를 분리시켜야 함
객체 지향 프로그래밍의 SOLID 원칙 중의 하나임.
의존 관계 역전 법칙은 상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 전통적인 의존관계를 반전시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있는 구조를 말함
protocol Menu { func printCoffee() func printMeal() }
class Eat: Menu { var coffee: String var meal: String init(coffee: String, meal: String) { self.coffee = coffee self.meal = meal } func printCoffee() { print("아메리카노") } func printMeal() { print("피자") } }
struct Person { var todayEat: Menu func printCoffee() { todayEat.printCoffee() } func printMeal() { todayEat.printMeal() } mutating func changeMenu(menu: Menu) { self.todayEat = menu } }
이렇게 구현한다면 Eat객체와 Person객체는 거의 독립적인 객체가 됨
Eat 객체를 수정하거나 Person을 수정한다고 해서 상대 객체를 함께 수정해야 하는 문제를 방지할 수 있음
(Person->Eat) 구조에서 의존 관계 역전 법칙에서는 어떤 추상화된 인터페이스에 A, B 객체가 모두 의존 (Eat → 프로토콜 ← Person)
위 구조는 Eat(상위 모듈), Person(하위 모듈) 모두 Menu(추상화 프로토콜) 에 의존해있어 의존 관계를 독립 시킨 상태
이렇게 의존의 방향이 역전되어 제어가 반전되는 상황을 제어의 반전 (IoC: Inversion of Control) 이라고 표현
The text was updated successfully, but these errors were encountered:
seungchan2
No branches or pull requests
의존성 주입은 Swift에서만 등장하는 것이 아님
Dependency
객체 지향 프로그래밍에서 Dependency, 의존성은 서로 다른 객체 사이에 의존 관계가 있다는 것을 말함
즉, 의존하는 객체가 수정되면, 다른 객체도 영향을 받음
Person 객체
는Eat 객체
를 인스턴스로 사용하고 있고, Eat 객체에 의존성이 생김이때, Eat 객체에 중요한 수정이나 오류가 발생한다면, Person 객체에도 영향이 감
의존성을 가지는 코드가 많아 진다면, 재사용성이 떨어지고, 매번 의존성을 가지는 객체들을 함께 수정해줘야 함
이러한 의존성을 해결하기 위해 나온 것이 Dependency Injection, 의존성 주입임
Injection
주입은 외부에서 객체를 생성해서 넣는 것을 의미
해당 방식처럼 생성자를 활용해서 외부에서 주입할 수 있음 ㅇㅇ
하지만 의존성을 주입하는 것 만으로 의존성 주입이라고 하지 않음
의존 관계 역전 법칙에 대해 알아야 함
의존성 주입에서 의존성 분리는 의존 관계 역전 법칙으로 의존 관계를 분리시켜야 함
DIP, 의존 관계 역전 법칙
객체 지향 프로그래밍의 SOLID 원칙 중의 하나임.
의존 관계 역전 법칙은 상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 전통적인 의존관계를 반전시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있는 구조를 말함
Protocol
Class
이렇게 구현한다면 Eat객체와 Person객체는 거의 독립적인 객체가 됨
Eat 객체를 수정하거나 Person을 수정한다고 해서 상대 객체를 함께 수정해야 하는 문제를 방지할 수 있음
(Person->Eat) 구조에서 의존 관계 역전 법칙에서는 어떤 추상화된 인터페이스에 A, B 객체가 모두 의존 (Eat → 프로토콜 ← Person)
위 구조는 Eat(상위 모듈), Person(하위 모듈) 모두 Menu(추상화 프로토콜) 에 의존해있어 의존 관계를 독립 시킨 상태
이렇게 의존의 방향이 역전되어 제어가 반전되는 상황을 제어의 반전 (IoC: Inversion of Control) 이라고 표현
The text was updated successfully, but these errors were encountered: