Single Responsibility Principle(SRP)
Bu ilke, her sınıfın tek bir sorumluluğu olması gerektiğini belirtir. Bir sınıfın belirli bir işlevi yerine getirmesi gerektiğini ve değişmek için çok fazla nedeni olmaması gerektiğini vurgular.
Örnek: Kullanıcı bilgilerini yönetme ve e-posta bildirimleri gönderme.
class UserManager:
def create_user(self, user_data):
# Logic for creating a user
pass
class EmailService:
def send_email(self, email_data):
# Logic for sending an email
pass
Open/Closed Principle(OCP)
Bu ilke, mevcut kodu değiştirmek yerine yeni kod ekleyerek işlevselliği genişletmeyi teşvik eder.
Örnek: Bir e-ticaret uygulamasında farklı ödeme yöntemlerinin kullanılması.
from abc import ABC, abstractmethod
class PaymentProcessor(ABC):
@abstractmethod
def process_payment(self):
pass
class CreditCardPaymentProcessor(PaymentProcessor):
def process_payment(self):
# Logic for processing credit card payment
pass
class PayPalPaymentProcessor(PaymentProcessor):
def process_payment(self):
# Logic for processing PayPal payment
pass
Liskov Substitution Principle(LSP)
Bu ilke, türetilmiş bir sınıfın nesnelerinin, programın doğruluğunu etkilemeden temel sınıfın nesnelerinin yerine geçebileceğini iddia eder.
Örnek: Geometrik şekilleri yönetme.
class Shape:
def area(self):
pass
class Rectangle(Shape):
def area(self):
return self.width * self.height
class Square(Shape):
def area(self):
return self.side * self.side
Interface Segregation Principle(ISP)
Bu ilke, sınıfları ihtiyaç duymadıkları yöntemleri uygulamaya zorlamaktan kaçınmak için arabirimleri daha küçük olanlara ayırmayı önerir.
Örnek: Verileri güncellemek ve görüntülemek için arayüzler.
class UpdateableFeature:
@abstractmethod
def update_feature(self):
pass
class DisplayableFeature:
@abstractmethod
def display_feature(self):
pass
Dependency Inversion Principle(DIP)
Bu ilke, bağımlılıkları yönetmek için bağımlılık enjeksiyonunun kullanılmasını önerir.
Örnek: Bağımlılıkları yönetmek için bağımlılık enjeksiyonunu kullanma.
class OrderProcessor:
def __init__(self, db_connection, email_service):
self.db_connection = db_connection
self.email_service = email_service
SOLID İlkelerin uygulanmasının Python, projenizin özel amacına ve SOLID ve ile ilgili anlayışınıza göre esnek bir şekilde yapılması gerektiğini unutmayın Python.