[python] 퍼사드 패턴

퍼사드 패턴은 소프트웨어 디자인 패턴 중 하나로, 복잡한 서브시스템을 단순하게 사용할 수 있는 인터페이스를 제공하는 패턴입니다. 퍼사드(Facade)는 ‘건물의 정면’이라는 뜻을 가지고 있는데, 이 패턴은 사용자에게 복잡한 내부 구조를 감추고, 단일하고 간단한 인터페이스만을 제공합니다.

퍼사드 패턴의 동작 방식

퍼사드 패턴은 클라이언트와 서브시스템 사이에 중재자 역할을 하는 퍼사드(Facade) 클래스를 도입하여 동작합니다. 클라이언트는 퍼사드를 통해 서브시스템을 사용하고, 퍼사드는 서브시스템 내부의 복잡한 동작을 캡슐화하여 단순한 인터페이스로 제공합니다.

퍼사드 패턴은 다음과 같은 장점을 가지고 있습니다:

퍼사드 패턴의 예제

다음은 퍼사드 패턴의 예제 코드입니다. 이 예제는 컴퓨터의 부팅 과정을 퍼사드로 추상화한 것입니다. 퍼사드 클래스인 ComputerFacade는 클라이언트에게 컴퓨터를 켜고 끄는 단일한 인터페이스를 제공합니다. 내부적으로는 CPU, 메모리, 디스크 등의 서브시스템을 사용하여 컴퓨터를 부팅합니다.

class CPU:
    def power_on(self):
        print("CPU: Power on")

    def power_off(self):
        print("CPU: Power off")

class Memory:
    def load_os(self):
        print("Memory: Load OS")

class Disk:
    def read(self):
        print("Disk: Read")

class ComputerFacade:
    def __init__(self):
        self.cpu = CPU()
        self.memory = Memory()
        self.disk = Disk()

    def power_on(self):
        self.cpu.power_on()
        self.memory.load_os()
        self.disk.read()
        print("Computer is powered on")

    def power_off(self):
        self.cpu.power_off()
        print("Computer is powered off")

# 테스트 코드
computer = ComputerFacade()
computer.power_on()
computer.power_off()

위의 예제 코드에서 ComputerFacade 클래스는 CPU, Memory, Disk 클래스를 사용하여 컴퓨터를 부팅하는 인터페이스를 제공합니다. 클라이언트는 ComputerFacade를 통해 컴퓨터를 켜고 끌 수 있습니다.

결론

퍼사드 패턴은 복잡한 서브시스템을 단순하고 간결한 인터페이스로 제공하여 코드의 가독성과 유지보수성을 향상시키는 디자인 패턴입니다. 이를 통해 클라이언트와 서브시스템 간의 결합도를 낮추고, 코드의 재사용성을 높일 수 있습니다.

더 자세한 내용은 다음 참고 자료를 확인하시기 바랍니다: