>  기사  >  백엔드 개발  >  Python 예제를 통해 SOLID 원리 이해하기

Python 예제를 통해 SOLID 원리 이해하기

王林
王林원래의
2024-07-16 03:49:441110검색

Understanding SOLID Principles with Python Examples

Python 예제를 통해 SOLID 원리 이해하기

SOLID 원칙은 개발자가 유지 관리 및 확장성이 뛰어난 소프트웨어를 만드는 데 도움이 되는 일련의 설계 원칙입니다. 간단한 Python 예제를 통해 각 원칙을 분석해 보겠습니다.

1. 단일 책임 원칙(SRP)

클래스를 변경해야 하는 이유는 단 하나여야 합니다. 즉, 클래스의 임무나 책임은 단 하나여야 합니다.

class Invoice:
    def __init__(self, items):
        self.items = items

    def calculate_total(self):
        return sum(item['price'] for item in self.items)

class InvoicePrinter:
    def print_invoice(self, invoice):
        for item in invoice.items:
            print(f"{item['name']}: ${item['price']}")
        print(f"Total: ${invoice.calculate_total()}")

# Usage
invoice = Invoice([{'name': 'Book', 'price': 10}, {'name': 'Pen', 'price': 2}])
printer = InvoicePrinter()
printer.print_invoice(invoice)

2. 개방/폐쇄 원칙(OCP)

소프트웨어 엔터티는 확장을 위해 열려 있어야 하지만 수정을 위해 닫혀 있어야 합니다.

class Discount:
    def apply(self, amount):
        return amount

class TenPercentDiscount(Discount):
    def apply(self, amount):
        return amount * 0.9

# Usage
discount = TenPercentDiscount()
print(discount.apply(100))  # Output: 90.0

3. 리스코프 대체 원리(LSP)

슈퍼클래스의 객체는 프로그램의 정확성에 영향을 주지 않고 서브클래스의 객체로 대체 가능해야 합니다.

class Bird:
    def fly(self):
        return "Flying"

class Sparrow(Bird):
    pass

class Ostrich(Bird):
    def fly(self):
        return "Can't fly"

# Usage
def make_bird_fly(bird: Bird):
    print(bird.fly())

sparrow = Sparrow()
ostrich = Ostrich()
make_bird_fly(sparrow)  # Output: Flying
make_bird_fly(ostrich)  # Output: Can't fly

4. 인터페이스 분리 원칙(ISP)

클라이언트가 사용하지 않는 인터페이스에 의존하도록 강요해서는 안 됩니다.

class Printer:
    def print(self, document):
        pass

class Scanner:
    def scan(self, document):
        pass

class MultiFunctionPrinter(Printer, Scanner):
    def print(self, document):
        print(f"Printing: {document}")

    def scan(self, document):
        print(f"Scanning: {document}")

# Usage
mfp = MultiFunctionPrinter()
mfp.print("Document1")
mfp.scan("Document2")

5. 의존성 역전 원리(DIP)

상위 모듈은 하위 모듈에 의존해서는 안 됩니다. 둘 다 추상화에 의존해야 합니다.

class Database:
    def connect(self):
        pass

class MySQLDatabase(Database):
    def connect(self):
        print("Connecting to MySQL")

class Application:
    def __init__(self, db: Database):
        self.db = db

    def start(self):
        self.db.connect()

# Usage
db = MySQLDatabase()
app = Application(db)
app.start()  # Output: Connecting to MySQL

이 예제는 Python을 사용하여 SOLID 원칙을 간결하게 보여줍니다. 각 원칙은 강력하고 확장 가능하며 유지 관리 가능한 코드베이스를 구축하는 데 도움이 됩니다.

위 내용은 Python 예제를 통해 SOLID 원리 이해하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.