Book/IT

클린 아키텍처 - 다형성

suee97 2024. 7. 5. 03:03

(책에 대한 내용을 요약한 것이 아닌, 책을 읽으며 생각을 정리하는 포스팅)

 

다형성이란?

 

다형성은 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에 의존하지 않기 때문에, 독립적이다.

 

 

출처

https://yagom.net/

Clean Architecture

'Book > IT' 카테고리의 다른 글

클린 아키텍처 - 이해관계자, 행위, 구조  (0) 2024.07.04