برنامه نویسی

درک اصول SOLID با مثال های پایتون

Summarize this content to 400 words in Persian Lang

درک اصول SOLID با مثال های پایتون

اصول SOLID مجموعه ای از اصول طراحی است که به توسعه دهندگان کمک می کند تا نرم افزارهای قابل نگهداری و مقیاس پذیرتری را ایجاد کنند. بیایید هر اصل را با مثال های مختصری از پایتون بشکنیم.

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

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این مثال‌ها اصول SOLID را به صورت مختصر با استفاده از پایتون نشان می‌دهند. هر اصل به ایجاد یک پایگاه کد قوی، مقیاس پذیر و قابل نگهداری کمک می کند.

درک اصول SOLID با مثال های پایتون

اصول SOLID مجموعه ای از اصول طراحی است که به توسعه دهندگان کمک می کند تا نرم افزارهای قابل نگهداری و مقیاس پذیرتری را ایجاد کنند. بیایید هر اصل را با مثال های مختصری از پایتون بشکنیم.

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
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این مثال‌ها اصول SOLID را به صورت مختصر با استفاده از پایتون نشان می‌دهند. هر اصل به ایجاد یک پایگاه کد قوی، مقیاس پذیر و قابل نگهداری کمک می کند.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا