Học các mẫu thiết kế python

Keras được sử dụng bởi CERN, NASA, NIH và nhiều tổ chức khoa học khác trên thế giới [và vâng, Keras được sử dụng tại LHC]. Keras có tính linh hoạt cấp thấp để thực hiện các ý tưởng nghiên cứu tùy ý trong khi cung cấp các tính năng tiện lợi cấp cao tùy chọn để tăng tốc chu kỳ thử nghiệm

Michele Bertoli là kỹ sư giao diện người dùng có niềm đam mê với giao diện người dùng đẹp. Sinh ra ở Ý, anh chuyển đến London cùng gia đình để tìm kiếm những cơ hội việc làm mới và thú vị. Anh ấy có bằng về khoa học máy tính và yêu thích mã sạch và được kiểm tra kỹ lưỡng. Hiện tại, anh ấy đang làm việc với React. js, tạo các ứng dụng JavaScript hiện đại. Anh ấy là một fan hâm mộ lớn của mã nguồn mở và luôn cố gắng học hỏi những điều mới mẻ

Tải Ebook Head First Design Patterns Python. PDF ✓ Toàn bộ sách Các mẫu thiết kế Python thực tế - Wessel Badenhorst ✓ Sách học lập trình Python ✓ File PDF Bản tiếng Anh ✓ Tải miễn phí sách liên kết Google Drive


Tải Ebook Các mẫu thiết kế Python thực hành PDF

XEM TRƯỚC 10 TRANG

SÁCH FULL SÁCH

Download ngay

GIỚI THIỆU TÀI KHOẢN

NHÂN ĐỀ TÀI THỰC TIỄN MẪU THIẾT KẾ PYTHONSTác giảWessel BadenhorstNăm xuất bản2017Nhà xuất bảnApressTóm tắtCuốn sách trình bày tổng hợp nhiều Pattern hữu ích trong lập trình Python. Bạn có thể tiếp tục thực hiện các kiến ​​thức được cung cấp trong sách và trở thành một học viên xuất sắc hơn mỗi ngày. lục mục
  • Chương 1. Trước khi chúng ta bắt đầu
  • Chương 2. Mô hình Singleton
  • Chương 3. mẫu nguyên mẫu
  • Chương 4. Mô hình nhà máy
  • Chương 5. Mẫu xây dựng
  • Chương 6. Mẫu bộ điều hợp
  • Chương 7. Hoa văn trang trí
  • Chương 8. hoa văn mặt tiền
  • Chương 9. Mẫu ủy quyền
  • Chương 10. Mẫu Chuỗi Trách nhiệm
  • Chương 11. Mẫu lệnh
  • Chương 12. Mô hình thông dịch viên
  • Chương 13. Mẫu lặp
  • Chương 14. Mẫu quan sát
  • Chương 15. Mô hình trạng thái
  • Chương 16. Mô hình chiến lược
  • Chương 17. Mẫu Phương thức Mẫu
  • Chương 18. Mô hình khách truy cập
  • Chương 19. Model-View-Controller Pattern
  • Chương 20. Xuất bản mẫu đăng ký của Vietnam

➤➤➤ Xem thêm các bài viết khác về Python

Trên đây là full Ebook Head First Design Patterns Python PDF bản tiếng Anh, ViecLamVui - chuyên trang tìm việc nhanh miễn phí - gửi cho bạn. Hy vọng tài liệu có thể hỗ trợ nghiên cứu học tập và nghiên cứu của các bạn thực sự hiệu quả

Trong chương này, chúng ta sẽ tìm hiểu những kiến ​​thức cơ bản về lập trình hướng đối tượng và thảo luận chi tiết về các nguyên tắc thiết kế hướng đối tượng. Điều này sẽ giúp chúng ta chuẩn bị cho các chủ đề nâng cao được đề cập ở phần sau của cuốn sách. Chương này cũng sẽ giới thiệu ngắn gọn về khái niệm mẫu thiết kế để bạn có thể đánh giá được bối cảnh và ứng dụng của mẫu thiết kế trong phát triển phần mềm. Ở đây chúng tôi cũng phân loại các mẫu thiết kế theo ba khía cạnh chính—mẫu sáng tạo, cấu trúc và Hành vi. Vì vậy, về cơ bản, chúng ta sẽ đề cập đến các chủ đề sau trong chương này

  • Tìm hiểu về lập trình hướng đối tượng

  • Thảo luận về các nguyên tắc thiết kế hướng đối tượng

  • Hiểu khái niệm về các mẫu thiết kế và phân loại và ngữ cảnh của chúng

  • Thảo luận về các mẫu cho ngôn ngữ động

  • Các mẫu phân loại—mẫu sáng tạo, mẫu cấu trúc và mẫu hành vi

 

Tìm hiểu về lập trình hướng đối tượng

Trước khi bạn bắt đầu tìm hiểu về các mẫu thiết kế, bạn nên tìm hiểu những kiến ​​thức cơ bản và xem qua các mô hình hướng đối tượng trong Python. Thế giới hướng đối tượng đưa ra khái niệm về đối tượng có thuộc tính [thành viên dữ liệu] và thủ tục [hàm thành viên]. Các chức năng này chịu trách nhiệm thao tác các thuộc tính. Chẳng hạn, lấy một ví dụ về đối tượng

a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
5. Đối tượng
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
5 sẽ có các thuộc tính như
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
7,
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
8,
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
9, và
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
0 và
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
1, và các phương pháp sẽ là
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
2 để tăng tốc độ và
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
3 để làm cho xe rẽ trái. Python đã là một ngôn ngữ hướng đối tượng kể từ khi nó được phát hành lần đầu tiên. Như họ nói, mọi thứ trong Python đều là đối tượng . Mỗi thể hiện hoặc biến của lớp có địa chỉ bộ nhớ hoặc danh tính riêng. Các đối tượng, là thể hiện của các lớp, tương tác với nhau để phục vụ mục đích của một ứng dụng đang được phát triển. Hiểu các khái niệm cốt lõi của lập trình hướng đối tượng liên quan đến việc hiểu các khái niệm về đối tượng, lớp và phương thức.

Các đối tượng

Các điểm sau đây mô tả các đối tượng

  • Chúng đại diện cho các thực thể trong ứng dụng của bạn đang được phát triển

  • Các thực thể tương tác với nhau để giải quyết các vấn đề trong thế giới thực

  • Ví dụ: Người là một thực thể và Xe hơi là một thực thể. Người điều khiển Ô tô di chuyển từ địa điểm này sang địa điểm khác

Các lớp học

Các lớp giúp các nhà phát triển đại diện cho các thực thể trong thế giới thực

  • Các lớp định nghĩa các đối tượng trong các thuộc tính và hành vi. Các thuộc tính là các thành viên dữ liệu và các hành vi được thể hiện bởi các hàm thành viên

  • Các lớp bao gồm các hàm tạo cung cấp trạng thái ban đầu cho các đối tượng này

  • Các lớp giống như các mẫu và do đó có thể dễ dàng sử dụng lại

Ví dụ: lớp

a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
4 sẽ có các thuộc tính
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
5 và
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
6 và hàm thành viên
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
7 xác định hành vi của anh ta khi đi công tác

phương pháp

Các điểm sau đây nói về những gì các phương pháp làm trong thế giới hướng đối tượng

  • Chúng đại diện cho hành vi của đối tượng

  • Các phương thức hoạt động trên các thuộc tính và cũng thực hiện các chức năng mong muốn

Một ví dụ điển hình về lớp và đối tượng được tạo trong Python v3. 5 được đưa ra ở đây

________số 8

Đầu ra của đoạn mã trước sẽ trông như sau

 

Các khía cạnh chính của lập trình hướng đối tượng

Bây giờ chúng ta đã hiểu những kiến ​​thức cơ bản về lập trình hướng đối tượng, hãy đi sâu vào các khía cạnh chính của OOP

đóng gói

Các tính năng chính của đóng gói như sau

  • Hành vi của một đối tượng được ẩn khỏi thế giới bên ngoài hoặc các đối tượng giữ thông tin trạng thái của chúng ở chế độ riêng tư

  • Máy khách không thể thay đổi trạng thái bên trong của đối tượng bằng cách tác động trực tiếp lên chúng; . Dựa trên loại yêu cầu, các đối tượng có thể phản hồi bằng cách thay đổi trạng thái bên trong của chúng bằng cách sử dụng các hàm thành viên đặc biệt như

    a = "John"
    b = [1,2,3]
    c = [3,4,6,8,9]
    print[a[1], b[0], c[2]]
    8 và
    a = "John"
    b = [1,2,3]
    c = [3,4,6,8,9]
    print[a[1], b[0], c[2]]
    9

  • Trong Python, khái niệm đóng gói [ẩn dữ liệu và phương thức] không ẩn vì nó không có các từ khóa như public . Tất nhiên, khả năng truy cập có thể được đặt ở chế độ riêng tư bằng cách thêm tiền tố

    a = "John"
    b = [1,2,3]
    c = [3,4,6,8,9]
    print[a[1], b[0], c[2]]
    10 vào tên biến hoặc hàm. private, and protected [in languages such as C++ or Java] that are required to support encapsulation. Of course, accessibility can be made private by prefixing
    a = "John"
    b = [1,2,3]
    c = [3,4,6,8,9]
    print[a[1], b[0], c[2]]
    10 in the variable or function name.

đa hình

Các tính năng chính của đa hình như sau

  • Đa hình có thể có hai loại

    • Một đối tượng cung cấp các triển khai khác nhau của phương thức dựa trên các tham số đầu vào

    • Các đối tượng thuộc các loại khác nhau có thể sử dụng cùng một giao diện

  • Trong Python, tính đa hình là một tính năng được tích hợp sẵn cho ngôn ngữ. Ví dụ: toán tử

    a = "John"
    b = [1,2,3]
    c = [3,4,6,8,9]
    print[a[1], b[0], c[2]]
    11 có thể thao tác trên hai số nguyên để cộng chúng hoặc có thể thao tác với các chuỗi để nối chúng

Trong ví dụ sau, tất cả các chuỗi, bộ dữ liệu hoặc danh sách đều có thể được truy cập bằng chỉ mục số nguyên. Điều này cho thấy cách Python thể hiện tính đa hình trong các kiểu dựng sẵn

a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]

Di sản

Những điểm sau đây giúp chúng ta hiểu rõ hơn về quy trình thừa kế

  • Tính kế thừa chỉ ra rằng một lớp kế thừa [hầu hết chức năng của nó] từ lớp cha

  • Kế thừa được mô tả như một tùy chọn để sử dụng lại chức năng được xác định trong lớp cơ sở và cho phép các phần mở rộng độc lập của việc triển khai phần mềm ban đầu

  • Kế thừa tạo ra hệ thống phân cấp thông qua các mối quan hệ giữa các đối tượng của các lớp khác nhau. Python, không giống như Java, hỗ trợ đa kế thừa [kế thừa từ nhiều lớp cơ sở]

Trong ví dụ mã sau,

a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
12 là lớp cơ sở và
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
13 lấy các tính năng của nó từ
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
12. Vì vậy, các phương thức của
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
12 có thể được truy cập bởi đối tượng của
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
13

a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
1

trừu tượng

Các tính năng chính của trừu tượng như sau

  • Nó cung cấp cho bạn một giao diện đơn giản cho các máy khách, nơi các máy khách có thể tương tác với các đối tượng lớp và gọi các phương thức được định nghĩa trong giao diện

  • Nó trừu tượng hóa sự phức tạp của các lớp bên trong bằng một giao diện để máy khách không cần biết về các triển khai bên trong

Trong ví dụ sau, các chi tiết bên trong của lớp

a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
17 được trừu tượng hóa bằng phương thức
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
18

a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
2

Thành phần

Thành phần đề cập đến các điểm sau

  • Đó là một cách để kết hợp các đối tượng hoặc lớp thành cấu trúc dữ liệu phức tạp hơn hoặc triển khai phần mềm

  • Trong thành phần, một đối tượng được sử dụng để gọi các chức năng thành viên trong các mô-đun khác, do đó làm cho chức năng cơ sở có sẵn trên các mô-đun mà không cần kế thừa

Trong ví dụ sau, đối tượng của

a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
12 được tổng hợp theo
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
13

a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
5

 

Nguyên tắc thiết kế hướng đối tượng

Bây giờ, hãy nói về một tập hợp các khái niệm khác sẽ rất quan trọng đối với chúng ta. Đây không là gì ngoài các nguyên tắc thiết kế hướng đối tượng sẽ hoạt động như một hộp công cụ cho chúng ta khi tìm hiểu các mẫu thiết kế một cách chi tiết

Nguyên tắc mở/đóng

Nguyên tắc mở/đóng nêu rõ rằng các lớp hoặc đối tượng và phương thức phải mở để mở rộng nhưng đóng để sửa đổi .

Điều này có nghĩa là trong ngôn ngữ đơn giản, khi bạn phát triển ứng dụng phần mềm của mình, hãy đảm bảo rằng bạn viết các lớp hoặc mô-đun của mình theo cách chung để bất cứ khi nào bạn cảm thấy cần mở rộng hành vi của lớp hoặc đối tượng, thì bạn không nên . Thay vào đó, một phần mở rộng đơn giản của lớp sẽ giúp bạn xây dựng hành vi mới

Ví dụ, nguyên tắc mở/đóng được thể hiện trong trường hợp người dùng phải tạo triển khai lớp bằng cách mở rộng lớp cơ sở trừu tượng để triển khai hành vi được yêu cầu thay vì thay đổi lớp trừu tượng

Ưu điểm của nguyên tắc thiết kế này như sau

  • Các lớp hiện tại không bị thay đổi và do đó cơ hội hồi quy ít hơn

  • Nó cũng giúp duy trì khả năng tương thích ngược cho mã trước đó

Đảo ngược nguyên lý điều khiển

Nguyên tắc điều khiển đảo ngược nói rằng các mô-đun cấp cao không nên phụ thuộc vào các mô-đun cấp thấp; . Thông tin chi tiết phải phụ thuộc vào sự trừu tượng chứ không phải ngược lại .

Nguyên tắc này gợi ý rằng hai mô-đun bất kỳ không nên phụ thuộc chặt chẽ vào nhau. Trên thực tế, mô-đun cơ sở và mô-đun phụ thuộc phải được tách rời bằng một lớp trừu tượng ở giữa

Nguyên tắc này cũng gợi ý rằng các chi tiết của lớp của bạn nên đại diện cho các trừu tượng. Trong một số trường hợp, triết lý bị đảo ngược và chính các chi tiết triển khai quyết định tính trừu tượng, điều này nên tránh

Ưu điểm của đảo ngược nguyên tắc điều khiển như sau

  • Sự kết hợp chặt chẽ của các mô-đun không còn phổ biến và do đó không còn độ phức tạp/độ cứng nhắc trong hệ thống

  • Vì có một lớp trừu tượng rõ ràng giữa các mô-đun phụ thuộc [được cung cấp bởi hook hoặc tham số], thật dễ dàng để xử lý các phụ thuộc giữa các mô-đun theo cách tốt hơn

Nguyên tắc phân biệt giao diện

Như nguyên tắc phân tách giao diện nêu rõ, không nên buộc khách hàng phụ thuộc vào giao diện mà họ không sử dụng .

Nguyên tắc này nói về việc các nhà phát triển phần mềm viết giao diện của họ tốt. Chẳng hạn, nó nhắc nhở các nhà phát triển/kiến trúc sư phát triển các phương pháp liên quan đến chức năng. Nếu có bất kỳ phương thức nào không liên quan đến giao diện, lớp phụ thuộc vào giao diện phải triển khai nó một cách không cần thiết

Ví dụ: giao diện

a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
21 không nên có phương thức gọi là
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
22. Lớp
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
23 dựa trên giao diện
a = "John"
b = [1,2,3]
c = [3,4,6,8,9]
print[a[1], b[0], c[2]]
21 không nên bắt buộc phải triển khai phương thức này

Ưu điểm của nguyên tắc thiết kế này như sau

  • Nó buộc các nhà phát triển phải viết các giao diện mỏng và có các phương thức dành riêng cho giao diện

  • Nó giúp bạn không điền vào các giao diện bằng cách thêm các phương thức không chủ ý

Nguyên tắc trách nhiệm duy nhất

Như nguyên tắc trách nhiệm duy nhất nêu rõ, một lớp chỉ nên có một lý do để thay đổi .

Nguyên tắc này nói rằng khi chúng ta phát triển các lớp, nó sẽ đáp ứng tốt chức năng đã cho. Nếu một lớp đảm nhận hai chức năng, tốt hơn là nên tách chúng ra. Nó đề cập đến chức năng như một lý do để thay đổi. Ví dụ: một lớp có thể trải qua các thay đổi do sự khác biệt trong hành vi được mong đợi từ nó, nhưng nếu một lớp đang bị thay đổi vì hai lý do [về cơ bản là thay đổi ở hai chức năng], thì lớp đó chắc chắn phải được tách ra

Ưu điểm của nguyên tắc thiết kế này như sau

  • Bất cứ khi nào có sự thay đổi trong một chức năng, lớp cụ thể này cần phải thay đổi và không có gì khác

  • Ngoài ra, nếu một lớp có nhiều chức năng, các lớp phụ thuộc sẽ phải trải qua các thay đổi vì nhiều lý do, điều này sẽ tránh được

nguyên tắc thay thế

Nguyên tắc thay thế phát biểu rằng các lớp dẫn xuất phải có khả năng thay thế hoàn toàn các lớp cơ sở .

Nguyên tắc này khá đơn giản theo nghĩa là khi các nhà phát triển ứng dụng viết các lớp dẫn xuất, họ nên mở rộng các lớp cơ sở. Nó cũng gợi ý rằng lớp dẫn xuất nên càng gần lớp cơ sở càng tốt để lớp dẫn xuất tự thay thế lớp cơ sở mà không có bất kỳ thay đổi mã nào

 

Khái niệm về mẫu thiết kế

Cuối cùng, bây giờ là lúc chúng ta bắt đầu nói về các mẫu thiết kế. Các mẫu thiết kế là gì?

Các mẫu thiết kế lần đầu tiên được giới thiệu bởi GoF [ Gang of Four], where they mentioned them as being solutions to given problems. If you would like to know more, GoF refers to the four authors of the book, Mẫu thiết kế. Các yếu tố của phần mềm hướng đối tượng có thể tái sử dụng . Tác giả của cuốn sách là Erich Gamma , Richard Helm , Ralph Johnson, and John Vlissides, with a foreword by Grady Booch. This book covers software engineering solutions to the commonly occurring problems in software design. There were 23 design patterns first identified, and the first implementation was done with respect to the Java program language. Design patterns are discoveries and not an invention in themselves.

Các tính năng chính của các mẫu thiết kế như sau

  • Chúng trung lập về ngôn ngữ và có thể được triển khai trên nhiều ngôn ngữ

  • Chúng năng động, vì các mẫu mới thỉnh thoảng được giới thiệu

  • Chúng được mở để tùy chỉnh và do đó hữu ích cho các nhà phát triển

Ban đầu, khi bạn nghe về các mẫu thiết kế, bạn có thể cảm thấy như sau

  • Đó là thuốc chữa bách bệnh cho tất cả các vấn đề thiết kế mà bạn gặp phải cho đến nay

  • Đó là một cách giải quyết vấn đề phi thường, đặc biệt thông minh

  • Nhiều chuyên gia trong thế giới phát triển phần mềm đồng ý với các giải pháp này

  • Có điều gì đó có thể lặp lại về thiết kế, do đó có từ mẫu

Chắc hẳn bạn cũng đã cố gắng giải quyết các vấn đề mà một mẫu thiết kế hướng tới, nhưng có thể giải pháp của bạn chưa hoàn thiện và tính hoàn thiện mà chúng tôi đang tìm kiếm là vốn có hoặc tiềm ẩn trong mẫu thiết kế. Khi chúng tôi nói tính đầy đủ, nó có thể đề cập đến nhiều yếu tố như thiết kế, khả năng mở rộng, tái sử dụng, sử dụng bộ nhớ và các yếu tố khác. Về cơ bản, một mẫu thiết kế là học hỏi từ thành công của người khác hơn là thất bại của chính bạn

Một cuộc thảo luận thú vị khác về các mẫu thiết kế là—tôi sử dụng chúng khi nào? Software Development Life Cycle [SDLC]?

Thật thú vị, các mẫu thiết kế là giải pháp cho các vấn đề đã biết. Vì vậy, chúng có thể được sử dụng rất nhiều trong phân tích hoặc thiết kế, và như mong đợi, trong giai đoạn phát triển do mối quan hệ trực tiếp trong mã ứng dụng

Ưu điểm của các mẫu thiết kế

Ưu điểm của các mẫu thiết kế như sau

Phân loại các mẫu thiết kế

Không phải mọi đoạn mã hoặc thiết kế đều có thể được gọi là mẫu thiết kế. Ví dụ: cấu trúc lập trình hoặc cấu trúc dữ liệu giải quyết một vấn đề không thể được gọi là mẫu. Hãy hiểu các thuật ngữ một cách rất đơn giản dưới đây

Bối cảnh – khả năng ứng dụng của các mẫu thiết kế

Để sử dụng các mẫu thiết kế một cách hiệu quả, các nhà phát triển ứng dụng phải nhận thức được bối cảnh áp dụng các mẫu thiết kế. Chúng ta có thể phân loại ngữ cảnh thành các loại chính sau

 

Các mẫu cho ngôn ngữ động

Python là một ngôn ngữ động như Lisp. Bản chất động của Python có thể được biểu diễn như sau

  • Các loại hoặc lớp là các đối tượng trong thời gian chạy

  • Các biến có thể có loại như một giá trị và có thể được sửa đổi trong thời gian chạy. Ví dụ:

    a = "John"
    b = [1,2,3]
    c = [3,4,6,8,9]
    print[a[1], b[0], c[2]]
    25 và
    a = "John"
    b = [1,2,3]
    c = [3,4,6,8,9]
    print[a[1], b[0], c[2]]
    26, biến
    a = "John"
    b = [1,2,3]
    c = [3,4,6,8,9]
    print[a[1], b[0], c[2]]
    27 được gán trong thời gian chạy và loại cũng được thay đổi

  • Các ngôn ngữ động linh hoạt hơn về các hạn chế của lớp

  • Ví dụ: trong Python, tính đa hình được tích hợp sẵn trong ngôn ngữ, không có các từ khóa như

    a = "John"
    b = [1,2,3]
    c = [3,4,6,8,9]
    print[a[1], b[0], c[2]]
    28 và
    a = "John"
    b = [1,2,3]
    c = [3,4,6,8,9]
    print[a[1], b[0], c[2]]
    29 và mọi thứ đều được công khai theo mặc định

  • Đại diện cho một trường hợp mà các mẫu thiết kế có thể được triển khai dễ dàng bằng các ngôn ngữ động

 

phân loại mẫu

Cuốn sách của GoF về các mẫu thiết kế đã nói về 23 mẫu thiết kế và phân loại chúng theo ba loại chính

  • mô hình sáng tạo

  • mô hình cấu trúc

  • Mẫu hành vi

Việc phân loại các mẫu được thực hiện chủ yếu dựa trên cách các đối tượng được tạo, cách các lớp và đối tượng được cấu trúc trong một ứng dụng phần mềm và cũng bao gồm cách các đối tượng tương tác với nhau. Hãy nói chi tiết về từng loại trong phần này

mô hình sáng tạo

Sau đây là các thuộc tính của mẫu Creational

  • Chúng hoạt động trên cơ sở cách các đối tượng có thể được tạo

  • Họ cô lập các chi tiết của việc tạo đối tượng

  • Mã độc lập với loại đối tượng được tạo

Một ví dụ về mẫu sáng tạo là mẫu Singleton

mô hình cấu trúc

Sau đây là các thuộc tính của các mẫu cấu trúc

  • Họ thiết kế cấu trúc của các đối tượng và lớp để họ có thể sáng tác nhằm đạt được kết quả lớn hơn

  • Trọng tâm là đơn giản hóa cấu trúc và xác định mối quan hệ giữa các lớp và đối tượng

  • Họ tập trung vào sự kế thừa và thành phần của lớp

Một ví dụ về mẫu hành vi là mẫu Bộ điều hợp

Mẫu hành vi

Sau đây là các thuộc tính của các mẫu hành vi

  • Họ quan tâm đến sự tương tác giữa các đối tượng và trách nhiệm của các đối tượng

  • Các đối tượng sẽ có thể tương tác và vẫn được ghép nối lỏng lẻo

Một ví dụ về mẫu hành vi là mẫu Người quan sát

 

Tóm lược

Trong chương này, bạn đã học về các khái niệm cơ bản của lập trình hướng đối tượng, chẳng hạn như đối tượng, lớp, biến và các tính năng như đa hình, kế thừa và trừu tượng hóa với các ví dụ mã

Bây giờ chúng ta cũng biết về các nguyên tắc thiết kế hướng đối tượng mà chúng ta, với tư cách là nhà phát triển/kiến trúc sư, nên xem xét khi thiết kế một ứng dụng

Cuối cùng, chúng tôi tiếp tục khám phá thêm về các mẫu thiết kế và các ứng dụng cũng như bối cảnh mà chúng có thể được áp dụng và cũng thảo luận về phân loại của chúng

Ở cuối chương này, chúng ta đã sẵn sàng để thực hiện bước tiếp theo và nghiên cứu chi tiết về các mẫu thiết kế

Chủ Đề