Python의 전략 디자인 패턴



개체 지향 프로그래밍의 기본 사항과 그 원칙에 익숙하고 이를 프로젝트에 사용한다면 이제 다양한 디자인 패턴을 배우고 사용할 때일 것입니다.

좋은 OO에는 좋은 OO 디자이너가 필요합니다. 목표는 재사용 가능하고 유지 관리 가능하며 확장 가능한 코드를 만드는 것입니다.
그래서 OO를 위한 좋은 디자인이 필요합니다. 여기에서 디자인 패턴이 우리를 도와줍니다!

많은 디자인 패턴이 있습니다. GoF(Gangs of Four) 디자인 패턴 책에서 찾아 읽을 수 있습니다.
오늘 우리는 가장 쉽고 가장 인기 있는 디자인 패턴 중 하나에 대해 이야기할 것입니다.

전략 패턴은 행동 디자인 패턴으로 간주됩니다.
이를 통해 알고리즘을 정의하고, 각 알고리즘을 별도의 클래스에 넣고, 객체를 상호 교환 가능하게 만들 수 있습니다.

예를 들어 객체를 갖고 그 동작을 변경하려면 클래스 코드를 수정해야 합니다.
숫자만 가져오고 세터만 있는 OO 기반 계산기가 있고 합계, 빼기, 곱하기, 나누기와 같은 새로운 기능과 메서드를 추가해야 한다고 상상해 보세요.

이번에는 클래스 내부에서 이러한 메서드를 구현하지 않을 것입니다.

우선, 다음과 같은 초록이 필요합니다.

from abc import ABC, abstractmethod

class Operation_strategy(ABC):
    @abstractmethod
    def do_operation(self, n1, n2):
        pass


그런 다음 각 작업에 대해 새 클래스를 생성해야 합니다.

class Sum_strategy(Operation_strategy):
    def do_operation(self, n1, n2):
        return n1 + n2

class Sub_strategy(Operation_strategy):
    def do_operation(self, n1, n2):
        return n1 - n2

class Mul_strategy(Operation_strategy):
    def do_operation(self, n1, n2):
        return n1 * n2

class Div_strategy(Operation_strategy):
    def do_operation(self, n1, n2):
        if n2 != 0:
            result_number = n1 / n2
            return result_number
        else:
            raise ValueError("Sorry, no numbers below zero")


이제 한 가지 더, 계산기 클래스 내에서 작업 설정자를 초기화하고 설정해야 합니다.

아마 지금 당신은 혼란스럽고 무슨 일이 일어나고 있는지 말하고 있습니다. 하지만 분명히 말씀드리겠습니다.

계산기 클래스 내부에는 숫자(첫 번째 숫자와 두 번째 숫자)에 대해 2개의 설정자가 있는 대신 3개의 설정자(첫 번째 숫자, 두 번째 숫자, 연산)가 있습니다.

클래스는 무엇을 할지 전혀 알지 못합니다. 숫자와 연산만 받습니다!

이 패턴을 사용하면 클래스 코드를 변경하지 않고도 개체의 동작을 쉽게 정의할 수 있습니다. 이는 서로 분리되어 있기 때문에 깔끔한 코딩 방법입니다.

my Github에서 보다 이해하기 쉬운 전체 코드 버전을 보고 다운로드하고 실행할 수 있습니다. Here are the codes .

또한 많은 도움을 줄 수 있습니다.

좋은 웹페이지 즐겨찾기