Memahami Prinsip SOLID dengan Contoh Python

王林
Lepaskan: 2024-07-16 03:49:44
asal
1108 orang telah melayarinya

Understanding SOLID Principles with Python Examples

Memahami Prinsip SOLID dengan Contoh Python

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.

1. Prinsip Tanggungjawab Tunggal (SRP)

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)
Salin selepas log masuk

2. Prinsip Terbuka/Tertutup (OCP)

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
Salin selepas log masuk

3. Prinsip Penggantian Liskov (LSP)

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
Salin selepas log masuk

4. Prinsip Pengasingan Antara Muka (ISP)

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")
Salin selepas log masuk

5. Prinsip Penyongsangan Ketergantungan (DIP)

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
Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan