어댑터 패턴

kim hyun woo·2022년 7월 11일
1

어댑터 패턴(Adapter Parrtern)


이게 뭘까..... 오늘은 디자인 패턴중 하나인 어댑터 패턴을 공부해보자 ㅎㅎ

어댑터 패턴(Adapter pattern)은 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴으로, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해준다. -위키백과-

그렇다고 한다..

음 어댑터.... 내가 알고 있는 어댑터는 무언가 연결을 시켜주는
중간 다리 역할이다..

위키백과의 말을 자세히 보면 클래스와 연결하고 싶은 클래스 사이에 인터페이스를 끼어넣어 연결시켜준다는 의미인 것 같다..

맞나,,?

예를 들어 생각해보자..

옛날 어렸을적,, 돼지코를 기억하는가?
물론 난 어려서 기억이 안난다.
엄청 옛날 선풍기는 110V(돼지코)이다.. 지금 현재 돼지코를 사용하기 위해선
무언가가 필요하다. 그 무언가가 바로 어댑터이다..
여기서 어댑터의 역할은 한전에서 주는 220V를 110V로 낮춰서 돼지코를 통해 선풍기를 작동시켜주는 아주 중요한 녀석이다.

위와 같이 어댑터 패턴은 이런 역할인 것 같다...


이해하기 쉽게 코드로 한번 만들어 보자!!

interface KoreaElectric { //내가 제공받는 220V 전기
    fun onSupply()
}
interface Fan { // 내가 원하는 동작
    fun onOperate()
}

class TwoTwoZeroFan : KoreaElectric { // 220V로 된 선풍기
    override fun onSupply() {
        println("선풍기 작동!!")
    }
}

class Adapter(var electric : KoreaElectric) : Fan { // 어댑터로 220V에서 110V로 감압
    override fun onOperate() {
        electric.onSupply()
    }
}

class User { // 주체 생성
    var adapter : Fan = Adapter(TwoTwoZeroFan())
    fun onStart(){
        adapter.onOperate()
    }
}

fun main(){
    var grandmother = User()
    grandmother.onStart()
}

이렇게 만들어봤다.. 내가 맞게 이해했는 지는 잘 모르지만
대충 무슨 느낌인지는 코드작성으로 인해 이해가 됐다...

;;

profile
TIL(Today I Learned)

0개의 댓글