Nguyên tắc SOLID Python

Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu về nguyên tắc trách nhiệm duy nhất và cách triển khai nó trong Python

RẮN là gì

SOLID là từ viết tắt của năm nguyên tắc thiết kế phần mềm được biên soạn bởi Uncle Bob

  • S – Nguyên tắc trách nhiệm duy nhất
  • O – Nguyên tắc mở-đóng
  • L – Nguyên tắc thay thế Liskov
  • I – Nguyên tắc phân tách giao diện
  • D – Nguyên tắc đảo ngược phụ thuộc

Trách nhiệm duy nhất là nguyên tắc đầu tiên trong các nguyên tắc SOLID

Giới thiệu về nguyên tắc trách nhiệm duy nhất

Nguyên tắc trách nhiệm duy nhất (SRP) nói rằng mọi lớp, phương thức và chức năng chỉ nên có một công việc hoặc một lý do để thay đổi

Mục đích của nguyên tắc trách nhiệm duy nhất là

  • Tạo các lớp, phương thức và hàm mạnh mẽ và gắn kết cao
  • Thúc đẩy thành phần lớp học
  • Tránh sao chép mã

Hãy xem lớp Person sau đây

class Person: def __init__(self, name): self.name = name def __repr__(self): return f'Person(name={self.name})' @classmethod def save(cls, person): print(f'Save the {person} to the database') if __name__ == '__main__': p = Person('John Doe') Person.save(p)

Code language: Python (python)

Lớp Person này có hai công việc

  • Quản lý tài sản của người đó
  • Lưu trữ người trong cơ sở dữ liệu

Sau này, nếu bạn muốn lưu Person vào một bộ lưu trữ khác, chẳng hạn như tệp, bạn sẽ cần thay đổi phương thức save(), điều này cũng thay đổi toàn bộ lớp Person

Để làm cho lớp Person tuân theo nguyên tắc trách nhiệm duy nhất, bạn sẽ cần tạo một lớp khác chịu trách nhiệm lưu trữ lớp Person vào cơ sở dữ liệu. Ví dụ

class Person: def __init__(self, name): self.name = name def __repr__(self): return f'Person(name={self.name})' class PersonDB: def save(self, person): print(f'Save the {person} to the database') if __name__ == '__main__': p = Person('John Doe') db = PersonDB() db.save(p)

Code language: Python (python)

Trong thiết kế này, chúng tôi tách lớp Person thành hai lớp. Person

class Person: def __init__(self, name): self.name = name def __repr__(self): return f'Person(name={self.name})' class PersonDB: def save(self, person): print(f'Save the {person} to the database') if __name__ == '__main__': p = Person('John Doe') db = PersonDB() db.save(p)

Code language: Python (python)
2

  • Lớp Person chịu trách nhiệm quản lý các thuộc tính của người đó
  • Lớp PersonDB chịu trách nhiệm lưu trữ người trong cơ sở dữ liệu

Trong thiết kế này, nếu bạn muốn lưu Person vào bộ lưu trữ khác, bạn có thể định nghĩa một lớp khác để thực hiện việc đó. Và bạn không cần thay đổi lớp Person

Khi thiết kế các lớp, bạn nên đặt các phương thức liên quan có cùng lý do thay đổi với nhau. Nói cách khác, bạn nên tách các lớp nếu chúng thay đổi vì những lý do khác nhau

Thiết kế này có một vấn đề mà bạn cần giải quyết với hai lớp. Person

class Person: def __init__(self, name): self.name = name def __repr__(self): return f'Person(name={self.name})' class PersonDB: def save(self, person): print(f'Save the {person} to the database') if __name__ == '__main__': p = Person('John Doe') db = PersonDB() db.save(p)

Code language: Python (python)
2

Để thuận tiện hơn, bạn có thể sử dụng mẫu facade để lớp Person sẽ là mặt tiền cho lớp

class Person: def __init__(self, name): self.name = name def __repr__(self): return f'Person(name={self.name})' class PersonDB: def save(self, person): print(f'Save the {person} to the database') if __name__ == '__main__': p = Person('John Doe') db = PersonDB() db.save(p)

Code language: Python (python)
2 như thế này

Nguyên tắc SOLID có áp dụng cho Python không?

SOLID là từ viết tắt dễ nhớ của một tập hợp các nguyên tắc thiết kế được tạo ra để phát triển phần mềm bằng các ngôn ngữ hướng đối tượng. Các nguyên tắc trong SOLID nhằm thúc đẩy mã đơn giản hơn, mạnh mẽ hơn và dễ cập nhật hơn từ các nhà phát triển phần mềm .

Các nguyên tắc SOLID Python là gì?

Các nguyên tắc SOLID là. Nguyên tắc một trách nhiệm (SRP) Nguyên tắc đóng mở (OCP) Nguyên tắc thay thế Liskov (LSP)

5 nguyên tắc SOLID là gì?

Năm nguyên tắc RẮN này thường được sử dụng làm hướng dẫn khi tái cấu trúc phần mềm thành một thiết kế tốt hơn. .
Nguyên tắc trách nhiệm duy nhất (SRP)
Nguyên tắc Đóng-Mở (OCP)
Nguyên tắc thay thế Liskov (LSP)
Nguyên tắc phân tách giao diện (ISP)
Nguyên tắc đảo ngược phụ thuộc (DIP)

Các nguyên tắc SOLID có còn được sử dụng không?

Theo Orner, trong khi thực tiễn phát triển phần mềm đã thay đổi trong 20 năm qua, Các nguyên tắc RẮN vẫn là nền tảng của thiết kế tốt . Tác giả giải thích cách chúng cũng áp dụng cho lập trình chức năng và kiến ​​trúc microservice, với các ví dụ.