Принципът на единната отговорност (SRP) е един от SOLID принципите на обектно-ориентираното програмиране. Той гласи, че един клас трябва да има само една причина за промяна. С други думи, един клас трябва да има само една отговорност или работа.

Нека вземем пример, за да разберем този принцип в Python.

class Customer:
    def __init__(self, name, email):
        self.name = name
        self.email = email

    def send_email(self, message):
        # sending an email to the customer
        pass

    def place_order(self, order):
        # placing an order
        pass

    def generate_invoice(self, invoice):
        # generating an invoice
        pass

    def add_feedback(self, feedback):
        # add feedback
        pass

В този пример имаме клас Customer, който има три отговорности: изпращане на имейл до клиента, пускане на поръчка и генериране на фактура. Това нарушава SRP, защото ако трябва да променим някоя от тези отговорности, ще трябва да променим класа Customer.

За да следваме SRP, трябва да разделим класа Customer на по-малки и по-специфични, всеки от които изпълнява определена отговорност. Ето един пример:

class Customer:
    def __init__(self, name, email):
        self.name = name
        self.email = email

class EmailService:
    def send_email(self, customer, message):
        # Sending an email to the customer
        pass

class OrderService:
    def place_order(self, customer, order):
        # Placing an order
        pass

class InvoiceService:
    def generate_invoice(self, customer, invoice):
        # Generating an invoice
        pass

class FeedbackService:
    def add_feedback(self, customer, feedback):
        # add customer feedback
        pass

Сега всеки клас има само една отговорност, което прави нашия код по-лесен за поддържане и разбиране. Класът Customer отговаря само за съхраняване на информация за клиента, докато класовете EmailService, OrderService и InvoiceService отговарят съответно за изпращане на имейли, пускане на поръчки и генериране на фактури.

customer = Customer("shailesh", "[email protected]")

email_service = EmailService()
order_service = OrderService()
invoice_service = InvoiceService()
feedback_service = FeedbackService()

email_service.send_email(customer, "Thank you for your order")
order_service.place_order(customer, "Product A")
invoice_service.generate_invoice(customer, "Invoice 1")
feedback_service.add_feedback(customer, "Good Service")

В примера по-горе ние създадохме всеки клас поотделно и ги използвахме за изпълнение на съответните им отговорности. По този начин следваме SRP, като разделяме отговорностите и правим нашия код по-поддържаем и гъвкав.

Продължавайте да четете и следвайте аз и моя екип, за да сте в течение на най-новите блогове в света на технологиите.

За да прочетете повече за най-добрите практики: