본문 바로가기
Swift

Swift에서 퍼사드 패턴(Facade Pattern)의 개념과 예제

by mr.conan 2023. 6. 15.
728x90
반응형

퍼사드 패턴(Facade Pattern)은 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나입니다. Swift에서도 퍼사드 패턴을 활용하여 복잡한 서브시스템을 단순한 인터페이스로 감싸고, 클라이언트에게 편리한 사용 방법을 제공할 수 있습니다. 이 블로그 포스트에서는 퍼사드 패턴의 개념을 소개하고, Swift로 구현된 예제를 통해 퍼사드 패턴의 사용법을 알아보겠습니다.

 

퍼사드 패턴의 개념: 퍼사드 패턴은 복잡한 서브시스템을 단순한 인터페이스로 감싸고, 클라이언트에게 서브시스템과의 상호작용을 간소화하는 역할을 합니다. 이를 통해 클라이언트는 서브시스템의 복잡성을 알 필요 없이 퍼사드를 통해 간편하게 작업을 수행할 수 있습니다. 퍼사드 패턴은 복잡한 시스템을 사용하기 쉽게 추상화하는 데에 사용됩니다.

퍼사드 패턴 예제:

// Subsystem 1
class Engine {
    func start() {
        print("Engine: Starting")
    }
    
    func stop() {
        print("Engine: Stopping")
    }
}

// Subsystem 2
class AirConditioner {
    func turnOn() {
        print("AirConditioner: Turning On")
    }
    
    func turnOff() {
        print("AirConditioner: Turning Off")
    }
}

// Facade
class CarFacade {
    private let engine: Engine
    private let airConditioner: AirConditioner
    
    init() {
        engine = Engine()
        airConditioner = AirConditioner()
    }
    
    func startCar() {
        print("CarFacade: Starting Car")
        engine.start()
        airConditioner.turnOn()
    }
    
    func stopCar() {
        print("CarFacade: Stopping Car")
        engine.stop()
        airConditioner.turnOff()
    }
}

위의 예제에서는 Engine과 AirConditioner라는 서브시스템 클래스들이 있습니다. CarFacade는 퍼사드 역할을 수행하며, 클라이언트에게 편리한 인터페이스를 제공합니다. CarFacade는 내부적으로 Engine과 AirConditioner와의 상호작용을 캡슐화하여 클라이언트가 간편하게 자동차 작업을 수행할 수 있도록 합니다.

 

사용 예시:

let carFacade = CarFacade()
carFacade.startCar()
// Output:
// CarFacade: Starting Car
// Engine: Starting
// AirConditioner: Turning On

carFacade.stopCar()
// Output:
// CarFacade: Stopping Car
// Engine: Stopping
// AirConditioner: Turning Off

위의 예시에서는 CarFacade 인스턴스를 생성한 후, startCar()stopCar() 메서드를 호출하여 자동차의 시작과 정지 작업을 수행합니다.

728x90
반응형