디자인 패턴
디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 해결할 수 있도록 하나의 ‘규약’ 형태로 만들어 놓은 것
중복 코드 방지, 의존성 제거, 유지 보수 개선 등 코드의 더 좋은 구조를 만드는 것을 도와주는 코드 작성방법입니다.
퍼싸드 패턴
퍼싸드 패턴(Facade Pattern)이란 복잡한 내부 과정들을 하나의 큰 인터페이스로 감싸 외부의 간단한 인터페이스로 제공하는 패턴입니다.
커피를 만드는 상황을 kotlin 코드로 보겠습니다.
class WaterTank {
fun addWater(){
println("물을 추가합니다.")
}
}
class CoffeeMachine {
fun addShot(){
println("커피를 추가합니다.")
}
}
class IceMaker {
fun addIce(){
println("얼음을 추가합니다.")
}
}
커피를 만드는 과정에서 직접 WaterTank, CoffeeMachine, IceMaker를 각각 다뤄야 합니다.
val water = WaterTank()
val coffee = CoffeeMachine()
val ice = IceMaker()
water.addWater()
coffee.addShot()
ice.addIce()
클라이언트는 위의 과정을 하나하나 다 알고 신경 써주어야 하기 때문에 부담이 됩니다.
이 문제를 하나의 큰 인터페이스로 감싸 해결합니다.
class Coffee(val water: WaterTank, val coffee: CoffeeMachine,val ice: IceMaker) {
fun makeCoffee(){
println("커피만들기를 시작합니다.")
water.addWater()
coffee.addShot()
ice.addIce()
println("커피를 만들었습니다.")
}
}
Coffee라는 큰 인터페이스로 복잡한 과정을 감싸 클라이언트에게 해당 과정에 대해 몰라도 되게끔 부담을 덜어주었습니다.
val coffee = Coffee(WaterTank(), CoffeeMachine(), IceMaker())
coffee.makeCoffee()
이로써 클라이언트는 위와 같은 함수를 통해 모든 과정을 실행할 수 있습니다.
사람들이 세탁기, 커피머신, 휴대폰 등 기기들을 사용할 때 과정을 모두 다 이해하고 사용하지 않듯이 퍼싸드 패턴도 이와 마찬가지로 사용자에게 복잡한 과정을 몰라도 사용할 수 있게끔 도와주는 패턴입니다.
※ 잘못된 정보, 혹은 다른 의견이 있다면 댓글로 말해주세요. 감사합니다.