Prinsip SOLID ialah satu set prinsip reka bentuk yang membantu pembangun mencipta perisian yang lebih boleh diselenggara dan berskala. Mari kita pecahkan setiap prinsip dengan contoh Python ringkas.
Sesebuah kelas sepatutnya hanya mempunyai satu sebab untuk berubah, bermakna ia hanya mempunyai satu tugas atau tanggungjawab.
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)
Entiti perisian harus dibuka untuk sambungan tetapi ditutup untuk pengubahsuaian.
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
Objek kelas super harus diganti dengan objek subkelas tanpa menjejaskan ketepatan program.
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
Pelanggan tidak boleh dipaksa untuk bergantung pada antara muka yang mereka tidak gunakan.
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")
Modul peringkat tinggi tidak boleh bergantung pada modul peringkat rendah. Kedua-duanya harus bergantung pada abstraksi.
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
Contoh ini menggambarkan prinsip SOLID dengan cara yang ringkas menggunakan Python. Setiap prinsip membantu dalam membina pangkalan kod yang teguh, berskala dan boleh diselenggara.
Atas ialah kandungan terperinci Memahami Prinsip SOLID dengan Contoh Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!