인터페이스란?
- 인터페이스 분리 법칙에서의 인터페이스란 무엇일까?
- 이는 Java 언어의 인터페이스를 뜻하고, Swift에서는 프로토콜이 그 역할을 수행하고 있다.
- 따라서 인터페이스 분리 법칙이란, Swift에서는 프로토콜 분리 법칙이다.
프로토콜을 왜 분리할까?
- 우리는 프로토콜을 사용해 객체의 프로퍼티 / 메소드를 추상화하고, 코드가 다형성을 지원하도록 구현한다.
- 그런데 하나의 거대한 프로토콜에 모든 프로퍼티 / 메소드를 넣으면, 해당 프로퍼티 / 메소드 중 일부분만 필요한 객체 또한 필요없는 프로퍼티 / 메소드를 구현해야 한다.
- 따라서 프로토콜을 작고 집중된 단위로 분리해, 필요한 요구사항만을 객체가 구현할 수 있도록 하는 것이 프로토콜 분리 법칙, 즉 인터페이스 분리 법칙이다.
- 아래 프린터 예제를 살펴보자.
protocol MultiFunctionPrinter {
func printDocument()
func scanDocument()
func copyDocument()
}
class BasicPrinter: MultiFunctionPrinter {
func printDocument() {
print("Printing document...")
}
func scanDocument() {
}
func copyDocument() {
}
}
protocol Printer {
func printDocument()
}
protocol Scanner {
func scanDocument()
}
protocol Copier {
func copyDocument()
}
class BasicPrinterISP: Printer {
func printDocument() {
print("Printing document...")
}
}
class AllInOnePrinter: Printer, Scanner, Copier {
func printDocument() {
print("Printing document...")
}
func scanDocument() {
print("Scanning document...")
}
func copyDocument() {
print("Copying document...")
}
}
- 이번 공부로 인터페이스 분리 법칙에 관해 더욱 깊숙히 이해할 수 있었다.