Mẫu lớp Python

Quy trình công nghệ phần mềm thường tiết lộ cho chúng ta nhiều yếu tố dư thừa bên trong cấu trúc và mã phần mềm của chúng ta. Biết được điều này, một số trách nhiệm chính của nhà phát triển là viết mã dễ hiểu và dễ bảo trì - không chỉ là giải pháp

Tuy nhiên, các dự án thường trở nên phức tạp hơn theo thời gian, làm cho cấu trúc phần mềm ban đầu trở thành một yếu tố quan trọng phải được cân nhắc kỹ lưỡng và triển khai ngay từ đầu

Các mẫu thiết kế nhằm giải quyết vấn đề này

Các mẫu thiết kế là một tập hợp các tiêu chuẩn được sử dụng để tối ưu hóa các tác vụ cụ thể liên quan đến mô hình Lập trình hướng đối tượng [OOP]. Chúng nhằm mục đích giảm tổng số dòng mã, tối ưu hóa cấu trúc và chuẩn hóa kiến ​​trúc phần mềm

Mô hình Lập trình hướng đối tượng cung cấp một cấu trúc dựa trên các lớp, trong đó mỗi lớp đại diện cho một bản thiết kế cho một đối tượng [ví dụ của lớp đó] có các thuộc tính và phương thức riêng của nó. Các lớp này có liên quan và có các phụ thuộc, thành phần, kế thừa riêng, v.v. Chuyển các vấn đề và cấu trúc thực tế sang các giải pháp phần mềm là động lực chính để triển khai cấu trúc này

Trong hướng dẫn này, chúng ta sẽ khám phá một trong các Mẫu thiết kế hành vi và cách triển khai nó trong Python. phương pháp mẫu

Mẫu thiết kế này sẽ cung cấp cho chúng ta một phương pháp chung bao gồm nhiều bước. Sau đó, các lớp liên quan đến lớp phương thức mẫu của chúng tôi có thể gọi các bước này riêng lẻ hoặc ghi đè lên chúng

Ngoài ra, chúng ta sẽ tìm hiểu cách sử dụng Thư viện ABC trong Python, thư viện này xác định mối quan hệ kế thừa cho các lớp cơ sở trừu tượng [ABC]. Chúng tôi sẽ sử dụng thư viện này để tạo một ví dụ phương pháp mẫu đơn giản

Mẫu thiết kế hành vi

Phương thức mẫu là một mẫu thiết kế hành vi. Mẫu thiết kế hành vi chính xác là gì?

Có ba mẫu thiết kế phần mềm được công nhận rộng rãi. Sáng tạo, cấu trúc và hành vi

  • Mẫu thiết kế sáng tạo nhằm mục đích cho phép tạo đối tượng trong khi trừu tượng hóa/ẩn logic tạo đối tượng. Mẫu thiết kế sáng tạo được sử dụng để giúp chương trình linh hoạt hơn trong việc chọn đối tượng mà chúng nên tạo cho bất kỳ trường hợp sử dụng nào

  • Các mẫu thiết kế cấu trúc nhằm xử lý thành phần của các đối tượng và các lớp, dựa vào tính kế thừa để kiểm soát cách các đối tượng được tạo và các chức năng được cung cấp

  • Các mẫu thiết kế hành vi tập trung vào giao tiếp xảy ra giữa các đối tượng, kiểm soát cách dữ liệu di chuyển giữa các đối tượng và phân phối hành vi giữa các lớp

Phương thức mẫu tập trung vào việc phân phối các chức năng và phương thức giữa các lớp

Mẫu thiết kế phương pháp mẫu

Mẫu thiết kế phương thức mẫu cho phép chúng ta tạo một lớp cơ sở chứa một số bước cần thiết để hoàn thành một quy trình. Khi bạn xác định các bước này bằng một mẫu, có thể tạo một hoặc nhiều lớp cụ thể và ghi đè lên các bước mẫu. Điều này cho phép bạn thực hiện một số hoặc tất cả các bước, tùy thuộc vào lớp cụ thể mà không ghi đè lên toàn bộ quy trình

Để sử dụng phương thức mẫu, chúng tôi yêu cầu một lớp trừu tượng. Lớp trừu tượng về cơ bản là một quy trình chính được chia thành các bước nhỏ hơn hoặc các quy trình nhỏ. Nói cách khác, lớp trừu tượng sẽ sử dụng phương thức mẫu [quy trình chính] và trong mẫu, chúng tôi sẽ tìm thấy các cuộc gọi đến các bước nhỏ hoàn thành quy trình chính. Các quy trình nhỏ này sẽ là các phương thức/hàm mà các lớp cụ thể có thể gọi

Sử dụng một lớp trừu tượng có nghĩa là chúng ta không phải khởi tạo toàn bộ lớp cơ sở để có quyền truy cập vào các bước được xác định bằng phương thức mẫu. Thay vào đó, chúng ta có thể tạo các lớp con từ lớp trừu tượng và chỉ ghi đè lên các bước chúng ta cần trong các lớp con riêng lẻ

Khi chúng tôi xác định lớp trừu tượng, chúng tôi có thể tạo các lớp cụ thể sẽ ghi đè lên các bước chúng tôi cần. Chúng tôi sẽ sử dụng mối quan hệ thừa kế để đạt được điều này. Tùy thuộc vào ngữ cảnh của lớp cụ thể, chúng tôi sẽ ghi đè tất cả các bước hoặc chỉ một số trong số chúng

Chúng ta có thể biểu diễn cấu trúc của phương thức mẫu bằng sơ đồ lớp như thế này, phù hợp với mô hình OOP

Ở đây bạn có thể thấy rằng chúng ta bắt đầu bằng cách tạo một lớp trừu tượng với một phương thức mẫu bao gồm nhiều bước/hàm. Từ lớp trừu tượng này, chúng tôi tạo hai lớp cụ thể sử dụng các bước khác nhau của phương thức mẫu

Phương pháp mẫu so với. phương pháp nhà máy

Có một số nhầm lẫn về sự khác biệt giữa Mẫu phương thức Mẫu và Mẫu Phương thức xuất xưởng. Điều này là do cấu trúc của chúng tương tự nhau, mặc dù chúng không giống nhau. Factory Method là một Creational Pattern được sử dụng để tạo các đối tượng từ một superclass. Ngược lại, Phương thức mẫu là một Mẫu hành vi được sử dụng để xác định một phương thức chung bao gồm các bước có thể được sửa đổi bởi các lớp con của lớp trừu tượng, chứa phương thức mẫu

Nói cách khác, trong khi Phương thức xuất xưởng tạo các đối tượng, thì Phương thức mẫu sẽ ghi đè lên các chức năng của quy trình chính/cơ sở

Bây giờ chúng ta đã làm rõ sự khác biệt giữa các mẫu này, chúng ta có thể khám phá cách triển khai Mẫu thiết kế phương thức mẫu trong Python

Ghi chú. Python không hỗ trợ các lớp trừu tượng mà không sử dụng một thư viện cụ thể. Để sử dụng các liên kết lớp trừu tượng, chúng ta cần nhập thư viện ABC

Thư viện ABC

Thư viện ABC cung cấp cơ sở hạ tầng để quản lý các lớp cơ sở trừu tượng trong Python. Điều này có nghĩa là chúng ta có thể tạo các mối quan hệ lớp như kế thừa hoặc triển khai cho các lớp trừu tượng - điều cần thiết để triển khai hầu hết các mẫu thiết kế và đặc biệt quan trọng trong trường hợp của Phương thức mẫu

Khi nào nên sử dụng Mẫu phương thức mẫu?

Bạn sẽ muốn sử dụng Phương thức Mẫu khi bạn cần sử dụng hoặc sửa đổi một số hoặc tất cả các bước của thuật toán. Trong những trường hợp này, bạn sẽ cần phân biệt các bước của thuật toán hoặc quy trình của mình, làm cho chúng có thể truy cập riêng lẻ thông qua kế thừa hoặc triển khai

Hãy xem một ví dụ thực tế

Chúng tôi có hai nhóm nhà nghiên cứu, một từ Đại học A và một từ Đại học B. Hai nhóm này đang nghiên cứu tác động của việc cách ly do các chính phủ thực hiện để đối phó với đại dịch SARS‑CoV‑2. Cả hai nhóm đều có quy trình nghiên cứu cơ bản giống nhau. Quy trình nghiên cứu cơ bản là khuôn mẫu mà hai nhóm nghiên cứu có thể sử dụng để tiến hành điều tra. Tuy nhiên, các nhóm nghiên cứu có thể tùy chỉnh quá trình nghiên cứu về

  • Những bước nào được thực hiện trong quá trình nghiên cứu
  • Cách thức tiến hành từng bước nghiên cứu

Hãy biểu diễn nghiên cứu này bằng sơ đồ lớp trước khi tạo mô hình bằng mã Python

Hướng dẫn nghiên cứu gồm 4 bước

  • Trường A quyết định áp dụng 2 trong 4 bước [2 và 3]
  • Đại học B áp dụng 3 bước [1, 3 và 4]
  • Cả hai nhóm đã sửa đổi tất cả các bước đã chọn
  • Cuối cùng, bước số 3 phải được áp dụng cho cả hai nhóm vì đây là bước bắt buộc

Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó

Chúng tôi đã có lớp sơ đồ của mình, chúng tôi chỉ cần thay đổi nó để nó phù hợp với vấn đề của chúng tôi

Cập nhật sơ đồ để phù hợp với các điều kiện chúng tôi đã chỉ định, chúng tôi kết thúc với mô hình sau

Triển khai Mẫu thiết kế phương thức mẫu trong Python

Bây giờ chúng ta đã có phác thảo cho các lớp cụ thể và trừu tượng của mình, hãy triển khai chúng trong Python

Hãy bắt đầu với lớp trừu tượng của chúng ta - researchGuideline.py, lớp này sẽ chứa các phương thức mẫu của chúng ta với bốn bước chính để nghiên cứu

Đầu tiên, chúng ta sẽ nhập thư viện ABC. Thư viện này chứa một lớp có tên là ABC và chúng tôi sẽ sử dụng nó làm lớp cha cho mẫu nghiên cứu của mình, biến nó thành một lớp cơ sở trừu tượng

Tiếp theo, chúng tôi sẽ xác định các bước của chúng tôi dưới dạng các phương thức lớp. Các phương thức này sẽ trống ngay bây giờ, nhưng khi chúng tôi xác định các lớp con - chúng sẽ ghi đè lên các bước

Lưu ý cách chúng tôi thêm trình trang trí @abstractmethod vào bước 3. Điều này cho thấy rằng các lớp con của một lớp trừu tượng phải luôn ghi đè lên phương thức đó. Chúng ta phải bao gồm trình trang trí này trong quá trình nhập, vì nó cũng là một phần của thư viện ABC

Bây giờ hãy định nghĩa các lớp cụ thể của chúng ta. Chúng ta đang nói về Đại học A và B, với các bước tương ứng. Chúng tôi sẽ tạo một lớp con cho cả hai trường đại học bằng cách sử dụng mẫu ResearchGuideline

Đối với cả hai lớp, chúng ta phải nhập lớp ResearchGuideline và tạo một sự kế thừa giữa lớp cha và lớp con. Điều này cho phép chúng tôi sử dụng bước chúng tôi đã xác định trong hướng dẫn/mẫu và ghi đè lên chúng. Việc áp dụng các bước sẽ là một bản ghi/bản in đơn giản trong trường hợp này

Hãy bắt đầu với phân lớp đầu tiên

from researchGuideline import ResearchGuideline

class UniversityA[ResearchGuideline]:
    def step2[self]:
        print["Step 2 - Applied by University A"]
    
    def step3[self]:
        print["Step 3 - Applied by University A"]

Chúng tôi sẽ lưu cái này trong một tệp Python có tên là

from researchGuideline import ResearchGuideline

class UniversityB[ResearchGuideline]:
    def step1[self]:
        print["Step 1 - Applied by University B"]
    
    def step3[self]:
        print["Step 3 - Applied by University B"]

    def step4[self]:
        print["Step 4 - Applied by University B"]
1. Bây giờ hãy thiết lập phân lớp thứ hai

from researchGuideline import ResearchGuideline

class UniversityB[ResearchGuideline]:
    def step1[self]:
        print["Step 1 - Applied by University B"]
    
    def step3[self]:
        print["Step 3 - Applied by University B"]

    def step4[self]:
        print["Step 4 - Applied by University B"]

Chúng tôi sẽ lưu cái này trong một tệp Python có tên là

from researchGuideline import ResearchGuideline

class UniversityB[ResearchGuideline]:
    def step1[self]:
        print["Step 1 - Applied by University B"]
    
    def step3[self]:
        print["Step 3 - Applied by University B"]

    def step4[self]:
        print["Step 4 - Applied by University B"]
2

Lưu ý rằng chúng tôi đã chỉ ra trường đại học nào đang áp dụng các bước nào. Điều này giúp chúng tôi đánh giá cao sự thay đổi giữa hai lớp cụ thể

Mô hình phương thức mẫu của chúng ta, bao gồm lớp trừu tượng và lớp cụ thể, đã hoàn thành. Bây giờ, hãy tạo tập lệnh ứng dụng khách của chúng tôi để chúng tôi có thể áp dụng mô hình

Đầu tiên, hãy nhập các lớp học của chúng tôi. Điều này liên quan đến việc nhập lớp trừu tượng và hai lớp cụ thể. Sau đó, chúng ta sẽ tạo một hàm nhận đối tượng ResearchGuideline làm tham số, đó là lớp mẫu/lớp trừu tượng của chúng ta

Đây là vẻ đẹp của mối quan hệ thừa kế - bởi vì các lớp đại học là các lớp con từ ResearchGuideline, chúng chia sẻ cùng một loại đối tượng

Chúng ta có thể chuyển đối tượng

from researchGuideline import ResearchGuideline

class UniversityB[ResearchGuideline]:
    def step1[self]:
        print["Step 1 - Applied by University B"]
    
    def step3[self]:
        print["Step 3 - Applied by University B"]

    def step4[self]:
        print["Step 4 - Applied by University B"]
2 hoặc
from researchGuideline import ResearchGuideline

class UniversityB[ResearchGuideline]:
    def step1[self]:
        print["Step 1 - Applied by University B"]
    
    def step3[self]:
        print["Step 3 - Applied by University B"]

    def step4[self]:
        print["Step 4 - Applied by University B"]
3 làm đối số vào hàm gọi phương thức mẫu [đây là
from researchGuideline import ResearchGuideline

class UniversityB[ResearchGuideline]:
    def step1[self]:
        print["Step 1 - Applied by University B"]
    
    def step3[self]:
        print["Step 3 - Applied by University B"]

    def step4[self]:
        print["Step 4 - Applied by University B"]
4 bên dưới] và các bước được ghi đè bởi lớp cụ thể sẽ thay đổi cách phương thức mẫu thực thi

Ở đây chúng tôi sử dụng cả hai lớp, vì vậy chúng tôi có thể so sánh kết quả đầu ra

Chạy mã này, chúng tôi thu được đầu ra sau

University A:
Step 2 - Applied by University A
Step 3 - Applied by University A
University B:
Step 1 - Applied by University B
Step 3 - Applied by University B
Step 4 - Applied by University B

Phần kết luận

Phương thức mẫu là một cách hiệu quả để phân phối nhiệm vụ giữa các lớp, xác định lại quy trình và giảm mã. Áp dụng mẫu thiết kế này cho một thuật toán hoặc giải pháp có thể giúp bạn tránh các phương thức dư thừa và hợp lý hóa các quy trình thực thi dài hơn

Phương thức mẫu cũng là một ví dụ về việc sử dụng đúng mô hình OOP. Không thể áp dụng mô hình này trong mọi trường hợp, vì vậy hãy đảm bảo hiểu rõ nhu cầu của dự án trước khi sử dụng mô hình

Lớp có phải là một mẫu trong Python không?

Hiểu về Lớp học . Các đối tượng bao gồm các biến thành viên và có hành vi liên quan đến chúng. Trong một ngôn ngữ lập trình như Python, chúng ta có thể tạo một lớp bằng từ khóa "class". A class is considered a code template used for creating objects. Objects consist of member variables and have behaviour related to them. In a programming language like Python, we can create a class using the keyword "class".

${} trong Python là gì?

Nó có cú pháp hơi giống với. format[] khi được thực hiện với từ khóa, nhưng thay vì dấu ngoặc nhọn để xác định trình giữ chỗ, nó sử dụng ký hiệu đô la [$]. ${} cũng hợp lệ và phải được đặt khi một chuỗi hợp lệ xuất hiện sau phần giữ chỗ . Xem cú pháp cho các tình huống khác nhau.

Mẫu lớp là gì?

Mẫu lớp cung cấp thông số kỹ thuật để tạo lớp dựa trên tham số . Các mẫu lớp thường được sử dụng để triển khai các vùng chứa. Một mẫu lớp được khởi tạo bằng cách chuyển một tập hợp các loại nhất định cho nó dưới dạng đối số mẫu.

Sự khác biệt giữa mẫu lớp và lớp mẫu là gì?

Một lớp riêng lẻ xác định cách tạo nhóm đối tượng, trong khi mẫu lớp xác định cách tạo nhóm lớp. Lưu ý sự khác biệt giữa các thuật ngữ lớp mẫu và lớp mẫu. Mẫu lớp học . là mẫu được sử dụng để tạo các lớp mẫu .

Chủ Đề