[python] 파이썬에서의 클래스 상속을 활용한 디자인 패턴

파이썬은 클래스 상속을 통해 다양한 디자인 패턴을 구현할 수 있는 강력한 언어입니다. 이번 포스트에서는 파이썬에서의 클래스 상속을 활용한 몇 가지 디자인 패턴을 살펴보도록 하겠습니다.

목차

  1. 클래스 상속
  2. 팩토리 메서드 패턴
  3. 스트래티지 패턴
  4. 파사드 패턴

클래스 상속

파이썬에서 클래스 상속은 서브클래스가 슈퍼클래스의 특성과 기능을 상속받을 수 있게 해줍니다.

class Animal:
    def speak(self):
        print("Animal speaks")

class Dog(Animal):
    def speak(self):
        print("Woof")

팩토리 메서드 패턴

이 패턴은 객체 생성과정을 서브클래스로 분리하여 객체 생성 방법을 다양화하는 디자인 패턴입니다.

class FurnitureFactory:
    def create_furniture(self, furniture_type):
        pass

class ChairFactory(FurnitureFactory):
    def create_furniture(self, furniture_type):
        if furniture_type == "wooden":
            return WoodenChair()
        elif furniture_type == "plastic":
            return PlasticChair()

스트래티지 패턴

스트래티지 패턴은 동일 계열의 알고리즘군을 정의하고, 각 알고리즘을 캡슐화하여 교체 가능하게 만드는 디자인 패턴입니다.

class SortStrategy:
    def sort(self, data):
        pass

class QuickSortStrategy(SortStrategy):
    def sort(self, data):
        return quick_sort(data)

class BubbleSortStrategy(SortStrategy):
    def sort(self, data):
        return bubble_sort(data)

파사드 패턴

파사드 패턴은 복잡한 서브시스템을 단순화된 인터페이스를 통해 쉽게 접근할 수 있도록 하는 디자인 패턴입니다.

class CPU:
    def boot_up(self):
        pass

class Memory:
    def load(self):
        pass

class HardDrive:
    def read(self):
        pass

class ComputerFacade:
    def start(self):
        self.cpu = CPU()
        self.cpu.boot_up()
        self.memory = Memory()
        self.memory.load()
        self.hard_drive = HardDrive()
        self.hard_drive.read()

위와 같이 파이썬에서 클래스 상속을 활용하면 다양한 디자인 패턴을 구현할 수 있으며, 코드 재사용성과 유지보수성을 향상시킬 수 있습니다.

참고 자료