이게 뭘까..... 오늘은 디자인 패턴중 하나인 어댑터 패턴을 공부해보자 ㅎㅎ
어댑터 패턴(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()
}
이렇게 만들어봤다.. 내가 맞게 이해했는 지는 잘 모르지만
대충 무슨 느낌인지는 코드작성으로 인해 이해가 됐다...
끝;;