위임 숨기기
* 이것은 Swift에서 일반적으로 사용되는 대리자와 다른 개념입니다.
- B에 C의 인스턴스가 있고 A가 C에 접근하면 BC에 접근하지 않고 B에서 C를 반환하는 메서드를 만들어 사용자가 B를 알지 못하도록 수정한다(예상 효과: 사용자가 B를 모른다). 상태이므로 B의 코드를 변경할 때 어느 쪽을 사용할지 고민하지 않고 쉽게 변경할 수 있습니다.)
- 모듈식 설계의 핵심은 캡슐화로, 모듈이 시스템의 다른 부분에 대해 알아야 할 사항을 줄입니다.
- 무언가를 변경해야 할 때 함께 살펴볼 모듈이 적기 때문에 코드 변경이 더 쉽습니다.
- 리팩토링의 반대: 중개인 제거

위임 숨기기 예시)
리팩토링 전) 사용자가 person.department.manager에 접근하고 있기 때문에 부서가 삭제되거나 수정되더라도 사용자의 코드도 존중되어야 한다.
struct Person {
let department = Department()
}
struct Department {
let manager = Manager()
}
struct Manager {
}
let person = Person()
let manager = person.department.manager
리팩토링 적용) 위임을 숨겨 종속성 감소(ABC에서 AC로 액세스) – 부서 숨기기, 개인적으로 getManager() 생성
struct Person {
private let department = Department()
func getManager() -> Manager {
department.manager
}
}
struct Department {
let manager = Manager()
}
struct Manager {
}
let person = Person()
let manager = person.getManager()
* 참조
– 리팩토링(Marting Flowler)