(책에 대한 내용을 요약한 것이 아닌, 책을 읽으며 생각을 정리하는 포스팅)
다형성이란?
다형성은 OOP(객체 지향 프로그래밍)의 핵심 개념 중 하나로, 같은 인터페이스나 상위 클래스를 통해 다양한 데이터 타입을 처리할 수 있게 하는 기능이다.
다형성은 한 가지 타입이 다양한 동작을 수행할 수 있는 능력이다.
예시
class Game {
func play() {
print("무슨 게임인지 모르겠지만 일단 시작하겠습니다.")
}
}
class LOL: Game {
override func play() {
super.play()
print("LOL 시작")
}
}
class MapleStory: Game {
override func play() {
super.play()
print("MapleStory 시작")
}
}
func playGame(game: Game) {
game.play()
}
playGame(game: LOL())
playGame(game: MapleStory())
Game이라는 한 가지 타입이 LOL 시작, MapleStory 시작이라는 여러 동작을 수행할 수 있다.
다형성의 힘
만약, 위의 예시에서 FIFA라는 게임을 추가해서 플레이한다면 어떻게 해야할까?
Game을 고칠 필요가 없이, 새로운 타입을 만들고 play() 함수를 재정의하면 된다.
class FIFA: Game {
override func play() {
super.play()
print("FIFA 시작")
}
}
playGame(game: FIFA())
저자는 이러한 행위를 플러그인이라고 이야기한다.
새로운 기능을 추가했다가 제거하는 것이 Game이라는 클래스에 영향을 주지 않기 때문이다.
Game은 LOL이든, MapleStory든, FIFA에 의존하지 않기 때문에, 독립적이다.
출처
Clean Architecture
'Book > IT' 카테고리의 다른 글
| 클린 아키텍처 - 이해관계자, 행위, 구조 (0) | 2024.07.04 |
|---|