-
[Design Pattern] Facade Pattern 이란?Swift 2023. 8. 15. 11:59
하나의 시스템이 여러개의 서브 시스템을 갖고 있는 형태로 서브 시스템 간의 결합을 최소화한다.
다른 말로는 고수준의 인터페이스가 저수준의 인터페이스를 갖고 있는 형태로 저수준의 인터페이스는 서로를 모르게 된다.클린 아키택쳐에서 추구하는 형태가 이런건가하는 궁금증이 생긴다.
ViewModel -> UseCases 를 갖고 있고
UseCase -> Repositories 를 갖고 있다.
레이어를 지날수록 저수준을 서로를 모름과 동시에 본인이 담기는 고수준의 인터페이스가 어딘지도 모른다.
그저 고수준의 인터페이스에서 저수준을 갖고 있다 일을 시킬뿐이다.
import UIKit class A_Database { func getItems() -> [Int] { [1,2,3] } } class B_Database { func getItems() -> [Int] { [4,5,6] } } class Facade { private let db_A: A_Database private let db_B: B_Database init(db_A: A_Database, db_B: B_Database) { self.db_A = db_A self.db_B = db_B } func getAllItems() -> [Int] { let db_A_items = db_A.getItems() let db_B_items = db_B.getItems() return db_A_items + db_B_items } } let dataManager = Facade( db_A: .init(), db_B: .init() ) let result = dataManager.getAllItems() print(result) // [1, 2, 3, 4, 5, 6]
'Swift' 카테고리의 다른 글
[xcode] shortcuts (0) 2023.08.22 [Swift] Generic 을 활용해서 Array 에서 일치하는 Element 찾기 - Extension (0) 2023.08.17 [Swift] Generic 을 사용해서 로그를 편하게 찍기 (1) 2023.05.13 [Swift] Class Type 검사하기 - isMember(of: ) (0) 2023.05.12 TIL - 비동기에는 비용이 존재한다 (2) 2023.05.06