Exist Technote

[Python] Facade Pattern (퍼사드 패턴) 본문

Design Pattern/Structural

[Python] Facade Pattern (퍼사드 패턴)

by_Exist 2020. 10. 8. 19:45

우리는 리모컨의 신호가 어떤 방식으로 전달되는지 몰라도 조작할 수 있다.

Facade Pattern이란?

  • 서브 시스템의 인터페이스 집합에 대하여 하나의 통합된 인터페이스를 제공하는 패턴.
  • 서브시스템을 좀 더 사용하기 편하게 만드는 상위 수준의 인터페이스를 정의한다.

예제

# https://github.com/faif/python-patterns/blob/master/patterns/structural/facade.py
class CPU:

    def freeze(self):
        print("Freezing processor.")

    def jump(self, position):
        print("Jumping to:", position)

    def execute(self):
        print("Executing.")


class Memory:

    def load(self, position, data):
        print("Loading from {0} data: '{1}'.".format(position, data))


class SolidStateDrive:

    def read(self, lba, size):
        return "Some data from sector {0} with size {1}".format(lba, size)


class ComputerFacade:

    def __init__(self):
        self.cpu = CPU()
        self.memory = Memory()
        self.ssd = SolidStateDrive()

    # 상위 인터페이스
    def start(self):
        self.cpu.freeze()
        self.memory.load("0x00", self.ssd.read("100", "1024"))
        self.cpu.jump("0x00")
        self.cpu.execute()


# 쉽고 단순한 인터페이스를 제공.
if __name__ == "__main__":
    computer_facade = ComputerFacade()
    computer_facade.start()

여담

  • 따로 패턴으로 소개하지 않아도 누구나 해당 패턴을 자연스럽게 사용했을 거라고 생각한다.
Comments