SOLID 原則は、開発者がより保守しやすくスケーラブルなソフトウェアを作成するのに役立つ一連の設計原則です。簡単な Python の例を使用して、それぞれの原則を詳しく見てみましょう。
クラスの変更理由は 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)
ソフトウェア エンティティは拡張に対してオープンである必要がありますが、変更に対してはクローズされている必要があります。
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
スーパークラスのオブジェクトは、プログラムの正確さに影響を与えることなく、サブクラスのオブジェクトと置き換え可能である必要があります。
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
クライアントは、使用しないインターフェースに強制的に依存すべきではありません。
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")
高レベルのモジュールは低レベルのモジュールに依存しないでください。どちらも抽象化に依存する必要があります。
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 サイトの他の関連記事を参照してください。