ホームページ  >  記事  >  バックエンド開発  >  Python の例で SOLID 原則を理解する

Python の例で SOLID 原則を理解する

王林
王林オリジナル
2024-07-16 03:49:441109ブラウズ

Understanding SOLID Principles with Python Examples

Python の例で SOLID 原則を理解する

SOLID 原則は、開発者がより保守しやすくスケーラブルなソフトウェアを作成するのに役立つ一連の設計原則です。簡単な Python の例を使用して、それぞれの原則を詳しく見てみましょう。

1. 単一責任原則 (SRP)

クラスの変更理由は 1 つだけである必要があります。つまり、クラスの仕事または責任は 1 つだけである必要があります。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。