Các mẫu thiết kế trong lập trình python là gì?

Nhưng có bao nhiêu mẫu thiết kế tồn tại? . Trong các bài viết sau, chúng ta sẽ đi qua các mẫu thiết kế phổ biến nhất

Các mẫu thiết kế [Hình ảnh của tác giả]

Làm thế nào để xác định một mẫu thiết kế?

Một mẫu thiết kế được xác định bởi một số thuộc tính cơ bản mô tả và tạo điều kiện thuận lợi cho việc sử dụng nó. Những thuộc tính này là

  • Cấu trúc. biểu diễn đồ họa thông qua UML của các lớp liên quan và
    các mối quan hệ của chúng. [1] Người tham gia. các lớp tham gia vào mô hình, mối quan hệ và trách nhiệm của họ. [2] Hợp tác. làm thế nào các lớp khác nhau hợp tác để đạt được các mục tiêu.
  • Hậu quả. ưu điểm và nhược điểm của việc sử dụng mẫu và tác dụng phụ có thể có của việc sử dụng mẫu
  • Triển khai. các kỹ thuật và đề xuất triển khai
    cũng có tham chiếu đến các ngôn ngữ lập trình cụ thể.
  • Mã nguồn ví dụ. các đoạn mã cung cấp
    hướng dẫn triển khai.
  • công dụng đã biết. ví dụ về việc sử dụng trong các hệ thống hiện có
  • mẫu liên quan. sự khác biệt và mối quan hệ quan trọng nhất với các mẫu khác
Nhà máy trừu tượng

Theo tôi, cách dễ nhất để hiểu cách xác định một mẫu thiết kế là đưa ra một ví dụ, hãy bắt đầu với Nhà máy Trừu tượng

Chúng tôi thường thấy mình phải tạo các đối tượng mới giống nhau nhưng khác nhau. Giả sử chúng ta phải tạo một số ô tô, tất cả chúng sẽ chia sẻ một số thuộc tính, chẳng hạn như có bốn bánh và vô lăng, đồng thời chúng cũng sẽ chia sẻ một số chức năng như tăng tốc và dừng [nghỉ].
Nhưng nếu chúng ta muốn tạo ra những chiếc ô tô có đặc điểm riêng của chúng, chẳng hạn như “ô tô cổ” và “ô tô đua” thì những ô tô này sẽ có các thuộc tính và chức năng dành riêng cho phân lớp.

Và đây chính xác là nơi mẫu thiết kế hỗ trợ chúng ta, để giúp chúng ta quản lý dễ dàng và năng động việc tạo các đối tượng có chung thuộc tính và chức năng nhưng mỗi đối tượng này khác với đối tượng khác. Điều đầu tiên mà Abstract Factory khuyến nghị là khai báo rõ ràng các giao diện [các lớp không thể khởi tạo] cho từng sản phẩm, ví dụ như sản phẩm ô tô và xe đạp. Sau đó, bạn có thể yêu cầu tất cả các biến thể sản phẩm triển khai các giao diện để chúng tôi chắc chắn rằng chúng sẽ chia sẻ các thuộc tính và chức năng chung cho tất cả các đối tượng , chẳng hạn như gia tốc [] và dừng []

Hình ảnh của tác giả

Bây giờ chúng ta định nghĩa một giao diện của một nhà máy trừu tượng, đó là một giao diện của một lớp với các chức năng cho phép chúng ta tạo một đối tượng mới kiểu Xe hơi hoặc Xe đạp. Nhà máy thực sự sẽ tạo ra chiếc xe thuộc loại chủng tộc hoặc cổ điển sẽ phải triển khai các phương thức của giao diện

Hình ảnh của tác giả

Bằng cách này, bạn sẽ có một nhà máy cho từng sản phẩm con cụ thể và bạn sẽ không phải thêm các thuộc tính và chức năng trong quá trình tạo từng đối tượng riêng lẻ

Ngoài ra, một khách hàng sử dụng thông số kỹ thuật của nhà máy như RaceFactory sẽ nhận được một chiếc xe đua. Sau vài tháng, khi anh ấy đi mua một chiếc xe đạp mới, nó cũng sẽ là một chiếc xe đạp đua vì nó đến từ cùng một nhà máy, vì vậy anh ấy sẽ không phải lo lắng về việc có những sản phẩm với các kiểu dáng khác nhau.

UML nhà máy trừu tượng [Hình ảnh của tác giả]

Hãy viết mã

Nếu cho đến nay bạn vẫn chưa rõ mẫu thiết kế này dùng để làm gì và nó hoạt động như thế nào, chào mừng bạn đến với câu lạc bộ. Nếu bạn giống tôi, lập trình sẽ giải tỏa tâm trí của bạn

Đầu tiên, chúng ta tạo một AbstractFactory, trong Python, lớp trừu tượng là lớp kế thừa ABC, như ví dụ sau. Lớp trừu tượng này có hai phương thức, một để tạo ô tô và một để tạo một chiếc xe đạp. Vì vậy, bất kỳ lớp nào kế thừa lớp trừu tượng này sẽ phải triển khai hai phương thức này theo cách riêng của mình

Trong cả RaceFactory và VintageFactory, chúng tôi có các phương thức tạo ô tô và xe đạp. Bạn thấy rằng cả hai đều trả về một đối tượng kiểu Xe hơi và Xe đạp [được biểu thị bằng ký hiệu. -> Xe hơi].
Nhưng thực tế, Xe hơi và Xe đạp là các lớp trừu tượng, các lớp thực tế sẽ là RaceCar và VintageCar ​​[RaceBik và VintageBike]. Bằng cách này, mỗi Nhà máy sẽ chế tạo những chiếc ô tô [hoặc xe đạp] liên quan đến nó.
Trong trường hợp này, điều duy nhất thay đổi giữa Xe đua [RaceBike] và Xe cổ [VintagBike] là nó in “nhanh” thay vì “chậm”.

Bây giờ khách hàng sẽ chọn một trong các Nhà máy [lấy đó làm đầu vào] và sau đó anh ta sẽ tạo ra một chiếc ô tô và một chiếc xe đạp, và anh ta sẽ chắc chắn rằng chiếc ô tô và chiếc xe đạp đó sẽ có cùng kiểu dáng, cả hai sẽ là xe đua hoặc xe đạp.

Các mẫu thiết kế được sử dụng để giúp các lập trình viên hiểu các khái niệm, dạy, học và xây dựng các ý tưởng và khái niệm làm việc tuyệt vời khác. Vì vậy, khi bạn đang nghĩ đến các Mẫu thiết kế, hãy nghĩ đến việc giải quyết vấn đề. Mẫu thiết kế là các mô hình được xây dựng để giúp cấu trúc và giải quyết các vấn đề từ đơn giản đến phức tạp. Một số lượng lớn các lập trình viên đã thực sự triển khai chúng trong mã của riêng họ mà không nhận ra điều đó. Đó là bởi vì nó là một ý tưởng trừu tượng đến mức bạn có thể sử dụng nó mà không cần thực sự nghĩ nó là gì. Bằng cách biết Mẫu thiết kế là gì và cách sử dụng chúng, bạn có thể vượt qua những trở ngại dường như quá sức. Bạn cũng vậy, mang đến một mức độ nhận thức khác cho bảng và thay vì vô tình triển khai một Mẫu thiết kế không ổn định, bạn có thể triển khai một Mẫu thiết kế tuyệt vời có mục đích. Các mẫu thiết kế đang được sử dụng ngày càng nhiều trong cộng đồng phần mềm và việc biết chúng là một điểm cộng lớn. Điều quan trọng là bạn phải biết ít nhất những kiến ​​thức cơ bản về Lập trình hướng đối tượng. Cụ thể hơn là bạn biết về Kế thừa và Đa hình

Mẫu thiết kế thường được gọi là Mẫu thiết kế, vì chúng cung cấp mẫu về cách xử lý các sự cố thường xuyên lặp lại. Bạn có thể sử dụng các Mẫu thiết kế hiện có hoặc thậm chí tạo mẫu của riêng bạn. Có nhiều loại Design Patterns, đây là một số loại phổ biến

  • Sáng tạo
  • Cấu trúc
  • hành vi

Các mẫu thiết kế có một số phẩm chất tích cực độc đáo đối với chúng

  1. Chúng áp dụng cho mọi ngôn ngữ lập trình OOP [Lập trình hướng đối tượng]
  2. Họ linh hoạt. Liên tục thay đổi, phát triển và cập nhật
  3. Bỏ dở thường xuyên cho sự sáng tạo

cấu trúc hoa văn

Tên mẫu

Mô tả ngắn gọn về Mẫu

Vấn đề hoặc ý định

Vấn đề cơ bản mà bạn đang cố gắng giải quyết là gì?

Dung dịch

Chỉ định nơi áp dụng Mẫu. Xác định cấu trúc và hành vi của Pattern

Những người tham gia

Các lớp và đối tượng tham gia vào Pattern

Hậu quả

Các hiệu ứng có thể phát sinh từ việc sử dụng Mẫu

Các loại mẫu thiết kế Python phổ biến

sáng tạo

Nhà máy

Nhà máy trừu tượng

Độc thân

Người xây dựng

Nguyên mẫu

nhóm đối tượng

Cấu trúc

Người trang trí

Ủy quyền

bộ chuyển đổi

tổng hợp

Cầu

mặt tiền

hạng ruồi

hành vi

người quan sát

Khách thăm quan

Trình lặp

Chiến lược

Yêu cầu

người hòa giải

kỷ niệm

Tiểu bang

Chuỗi trách nhiệm

Triển khai Mẫu thiết kế cơ bản trong Python

Tên mẫu. Nhà máy

Loại hoa văn. Sáng tạo

Khi triển khai Mẫu thiết kế trong Python, điều quan trọng là có thể chọn đúng Mẫu cho mục đích sử dụng phù hợp. Biết danh mục Mẫu thiết kế của bạn sẽ giúp ích trong quá trình ra quyết định này

Vấn đề. Bạn không chắc mình cần loại đối tượng nào hoặc lớp nào bạn sẽ sử dụng

Vì vậy, trong tình huống giả định này, giả sử bạn sở hữu một cửa hàng máy tính và chỉ bán một loại màn hình. Màn hình bạn đang bán là một màn hình nhỏ. Bây giờ bạn muốn thêm màn hình lớn vào khoảng không quảng cáo của mình để bán

Dung dịch. Mẫu này tốt cho việc tạo các đối tượng mới. Nó cũng có khả năng ứng dụng rộng rãi trong nhiều lĩnh vực của các vấn đề lập trình liên quan đến giao diện hoặc khởi tạo lớp. Điều này có thể tuyệt vời để mở rộng các phiên bản lớp của bạn trên quy mô lớn và giữ cho mã của bạn nhanh chóng, đơn giản và có tổ chức

# First Class for Small Monitor
class SmallMonitor[]:
def __init__[self, brand]:
self._brand = brand
def details[self]:
details = "24in x 24in 1080p | $87.00"
return details
# Second Class for Large Monitor
class LargeMonitor[]:
def __init__[self, brand]:
self._brand = brand
def details[self]:
details = "32in x 32in 1080p | $115.00"
return details
# Basic Creative Design Pattern Implementation
def get_monitor[monitor = 'small_monitor']:
"""factory method"""
monitors = dict[small_monitor = SmallMonitor["ASUS"],
large_monitor = LargeMonitor["HP"]]
ruturn monitors[monitor]
small_monitor = get_monitor["small_monitor"].details[]
large_monitor = get_monitor["large_monitor"].details[]
print[small_monitor]
print[large_monitor]
[out]
24in x 24in 1080p | $87.00
32in x 32in 1080p | $115.00

Những người tham gia. Những người tham gia sẽ là các lớp SmallMonitor[]LargeMonitor[]. Ngoài ra, các đối tượng small_monitorlarge_monitor cũng sẽ được đưa vào

Hậu quả. Mẫu có những kết quả tích cực khi áp dụng cho khởi tạo lớp ở quy mô lớn nhưng đôi khi có thể gây nhầm lẫn hoặc không cần thiết cho các khởi tạo đơn giản hơn. Trong một số trường hợp, nó có thể giới hạn mã có sẵn. Điều này cũng có trong nhiều ứng dụng không được khuyến nghị trong Python

Sự kết luận

Các mẫu thiết kế hỗ trợ mã hóa nhất quán giữa cộng đồng, cũng như cá nhân. Họ giúp duy trì một hệ sinh thái lập trình lành mạnh có các giải pháp nổi tiếng cho các vấn đề phổ biến. Tuy nhiên, việc sử dụng Mẫu thiết kế đôi khi có thể khiến mọi thứ trở nên tồi tệ hơn và nên được tích hợp vào chế độ mã hóa của bạn bằng cách sử dụng logic, lý do và triển khai phù hợp. Đôi khi bạn có Mẫu thiết kế sai cho vấn đề hiện tại và đôi khi không có hoặc tạo mẫu của riêng bạn là ý tưởng tốt nhất. Dù thế nào đi chăng nữa, kiến ​​thức về Mẫu thiết kế sẽ không làm được gì ngoài việc giúp bạn trở thành một lập trình viên giỏi hơn. Trong nhiều trường hợp, chúng sẽ cải thiện mã và hiệu quả của bạn đáng kể. Tôi hy vọng điều này sẽ giúp ích cho bất kỳ ai muốn biết thêm về những kiến ​​thức cơ bản về Mẫu thiết kế trong Python. Cảm ơn bạn và mã hóa hạnh phúc

Các mẫu thiết kế Python là gì?

Theo nguyên tắc GOF, có tổng cộng 11 mẫu hành vi trong Python. Chuỗi trách nhiệm, Chỉ huy, Thông dịch viên, Người lặp lại, Người hòa giải, Vật kỷ niệm, Người quan sát, Trạng thái, Chiến lược, Bản mẫu, Khách truy cập . Tôi thấy các mẫu này rất hữu ích, nhưng điều này không có nghĩa là các nhóm mẫu khác không.

Các mẫu thiết kế trong lập trình là gì?

Trong công nghệ phần mềm, một mẫu thiết kế là một giải pháp chung có thể lặp lại cho một vấn đề thường xảy ra trong thiết kế phần mềm . Một mẫu thiết kế không phải là một thiết kế hoàn chỉnh có thể được chuyển đổi trực tiếp thành mã. Nó là một mô tả hoặc khuôn mẫu về cách giải quyết một vấn đề có thể được sử dụng trong nhiều tình huống khác nhau.

mẫu thiết kế với ví dụ là gì?

Mẫu thiết kế cung cấp thuật ngữ chuẩn và dành riêng cho từng tình huống cụ thể . Ví dụ: một mẫu thiết kế đơn lẻ biểu thị việc sử dụng một đối tượng để tất cả các nhà phát triển quen thuộc với một mẫu thiết kế duy nhất sẽ sử dụng một đối tượng duy nhất và họ có thể cho nhau biết rằng chương trình đang tuân theo một mẫu đơn lẻ.

3 mẫu thiết kế là gì?

Mẫu thiết kế được phân loại chủ yếu thành ba loại. Mẫu thiết kế sáng tạo, mẫu thiết kế kết cấu và mẫu thiết kế hành vi .

Chủ Đề