의존 관계 역전 원칙 - Kotlin 예시

dev210·2023년 10월 9일
0

SOLID 원칙

목록 보기
5/5

의존관계 역전 원칙(DIP, Dependency Inversion Principle)

- 의존 관계를 맺을 때 변하기 쉬운 것(구체적인 것)보다는 변하기 어려운 것(추상적인 것)에 의존해야 한다.
- 구체화된 클래스에 의존하기보다는 추상 클래스나 인터페이스에 의존해야한다.

예시

다음과 같이 database를 가지는 Phone 클래스가 있고, createDatabase를 통해서 database에 data를 만든다고 가정하자.
이 경우 Phone 클래스를 인스턴스화할때 LocalDatabase에 의존성을 가지게 되고, createDatabase 메소드도 LocalDatabase에 의존성을 가지게 된다.
만약 LocalDatabase대신 RemoteDatabase를 사용하게 된다면 database의 클래스 타입을 교체해줘야 한다.

class Phone {  
    var database = LocalDatabase()  
  
    fun createDatabase(){  
        database.create()  
    }  
}

이를 모든 Database 종류로 교체가 가능한 DB 인터페이스를 생성하여 상속하도록하여 의존성 문제를 해결할 수 있다.

interface DB {  
    fun create()  
}

class LocalDatabase : DB {  
  
    override fun create() {  
        ...
    }  
  
  
}

class RemoteDatabase : DB {  
  
    override fun create() {  
        ...
    }  
  
  
}

class Phone {  
    lateinit var database : DB  
  
    constructor(database: DB) {  
        this.database = database  
    }  
  
    fun createDatabase(){  
        database.create()  
    }  
}
profile
안드로이드 개발자

0개의 댓글