درک اصول 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 را به صورت مختصر با استفاده از پایتون نشان میدهند. هر اصل به ایجاد یک پایگاه کد قوی، مقیاس پذیر و قابل نگهداری کمک می کند.