본문 바로가기
CS/디자인 패턴

퍼싸드 패턴

by KDGdev 2023. 2. 3.

디자인 패턴


디자인 패턴이란 프로그램을 설계할 때 발생했던 문제점들을 해결할 수 있도록 하나의 ‘규약’ 형태로 만들어 놓은 것

 

중복 코드 방지, 의존성 제거, 유지 보수 개선 등 코드의 더 좋은 구조를 만드는 것을 도와주는 코드 작성방법입니다.

 

퍼싸드 패턴


퍼싸드 패턴(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()

 

이로써 클라이언트는 위와 같은 함수를 통해 모든 과정을 실행할 수 있습니다.

 

사람들이 세탁기, 커피머신, 휴대폰 등 기기들을 사용할 때 과정을 모두 다 이해하고 사용하지 않듯이 퍼싸드 패턴도 이와 마찬가지로 사용자에게 복잡한 과정을 몰라도 사용할 수 있게끔 도와주는 패턴입니다.

 

※ 잘못된 정보, 혹은 다른 의견이 있다면 댓글로 말해주세요. 감사합니다.

'CS > 디자인 패턴' 카테고리의 다른 글

MVP 패턴  (0) 2024.06.27
MVC 패턴  (0) 2024.06.26
전략 패턴  (1) 2023.01.29
팩토리 패턴  (0) 2023.01.24
싱글톤 패턴  (0) 2023.01.24