CodeGym/Khóa học Java/Mô-đun 3/Các mẫu hành vi, phần 2

Các mẫu hành vi, phần 2

Có sẵn

2.1 Trạng thái

Trạng thái là một mẫu thiết kế hành vi. Nó được sử dụng trong những trường hợp khi trong quá trình thực thi chương trình, đối tượng phải thay đổi hành vi tùy thuộc vào trạng thái của nó.

Tình trạng

Mô hình bao gồm 3 khối:

Bối cảnh là một lớp có các đối tượng sẽ thay đổi hành vi của chúng tùy thuộc vào trạng thái.

Trạng thái là giao diện mà mỗi trạng thái cụ thể phải thực hiện. Thông qua giao diện này, đối tượng Ngữ cảnh tương tác với trạng thái bằng cách ủy quyền các lệnh gọi phương thức tới nó. Giao diện nên chứa các phương tiện để phản hồi đối tượng có hành vi sẽ được thay đổi.

Đối với điều này, một sự kiện được sử dụng (Nhà xuất bản mẫu - Người đăng ký). Điều này là cần thiết để thay thế đối tượng trạng thái trong quá trình thực thi chương trình khi các sự kiện xảy ra. Có thể có trường hợp Context tự thăm dò định kỳ đối tượng trạng thái để chuyển đổi.

ConcreteState1, ConcreteState2 - các lớp trạng thái cụ thể. Nên chứa thông tin về những điều kiện và trạng thái mà đối tượng có thể chuyển từ trạng thái hiện tại. Ví dụ: từ ConcreteState1, một đối tượng có thể chuyển đến ConcreteState2 và ConcreteState3, và từ ConcreteState2 trở lại ConcreteState1, v.v. Đối tượng của một trong số chúng phải chứa Ngữ cảnh khi được tạo.

Ví dụ, bạn đang viết một trò chơi mà một nhân vật có thể chạy, bơi và bay. Nếu nhân vật của bạn xuống nước, thì việc hạn chế hành vi của anh ta trong nước là hợp lý: bây giờ anh ta không thể bắn, nhưng anh ta vẫn có một số hành động: bơi về phía trước, phải, trái, v.v.

Trạng thái của nhân vật của bạn có thể được mô tả bởi một đối tượng Trạng thái, đối tượng này có các phương thức có thể được gọi và sẽ thực hiện một số việc. Và sau khi nhân vật của bạn xuống nước, bạn chỉ cần thay đổi tham chiếu sang một đối tượng Trạng thái khác bên trong nó - và nó sẽ thay đổi trạng thái của nó.

2.2 chiến lược

Chiến lược là một mẫu thiết kế hành vi để xác định một nhóm thuật toán, đóng gói từng thuật toán và làm cho chúng có thể hoán đổi cho nhau. Điều này cho phép bạn chọn một thuật toán bằng cách xác định lớp thích hợp.

Mẫu Chiến lược cho phép bạn thay đổi thuật toán đã chọn bất kể các đối tượng máy khách sử dụng thuật toán đó.

Chiến lược

Mẫu Chiến lược cho phép bạn sử dụng các quy tắc hoặc thuật toán kinh doanh khác nhau tùy thuộc vào ngữ cảnh. Nó được sử dụng trong trường hợp phải sử dụng các thuật toán khác nhau ở cùng một nơi tùy thuộc vào trạng thái hiện tại của hệ thống (hoặc môi trường của nó).

Điểm mạnh:

  • đóng gói việc thực hiện các thuật toán khác nhau, hệ thống trở nên độc lập với những thay đổi có thể xảy ra trong quy tắc kinh doanh;
  • gọi tất cả các thuật toán theo một cách tiêu chuẩn;
  • không sử dụng công tắc và/hoặc câu lệnh điều kiện.

Mẫu này hơi giống với mẫu Trạng thái, nhưng ở đây điểm nhấn không phải là trạng thái mà là hành vi. Giả sử một nhân vật trong trò chơi của bạn có thể thay đổi vũ khí. Sau đó, khi thay đổi vũ khí, bạn chỉ cần thay đổi tham chiếu đến đối tượng mô tả cách thức hoạt động của vũ khí này.

2.3 Phương pháp mẫu

Phương thức mẫu

Lớp trừu tượng (abstract class) - định nghĩa các thao tác trừu tượng được thay thế trong các hàm thừa kế để thực hiện các bước của thuật toán; thực hiện một phương thức mẫu xác định khung của thuật toán. Phương thức mẫu gọi các hoạt động được thay thế và các hoạt động khác được định nghĩa trong lớp Trừu tượng.

Lớp cụ thể (lớp cụ thể) - thực hiện các hoạt động được thay thế theo cách cần thiết để thực hiện. Lớp Concrete giả định rằng các bước bất biến của thuật toán sẽ được thực hiện trong Lớp trừu tượng.

Mẫu này thường được sử dụng khi cần thiết:

  • Sử dụng một lần phần bất biến của thuật toán, để lại phần thay đổi theo quyết định của những người thừa kế.
  • Bản địa hóa và cách ly mã chung cho một số lớp để tránh trùng lặp.
  • Chỉ cho phép người thừa kế mở rộng mã ở những nơi nhất định.

Vâng, mẫu này mô tả việc sử dụng một cặp: một lớp trừu tượng và cách thực hiện của nó.

2.4 Chuỗi trách nhiệm

Chuỗi trách nhiệm là một mẫu thiết kế hành vi được thiết kế để tổ chức các cấp độ trách nhiệm trong một hệ thống.

chuỗi trách nhiệm

Mẫu được khuyến nghị sử dụng trong các điều kiện:

  • trong hệ thống đã phát triển, có một nhóm đối tượng có thể xử lý các thông báo thuộc một loại nhất định;
  • tất cả các tin nhắn phải được xử lý bởi ít nhất một đối tượng hệ thống;
  • các tin nhắn trong hệ thống được xử lý theo sơ đồ “tự xử lý hoặc chuyển nó cho người khác”, tức là một số tin nhắn được xử lý ở cấp độ mà chúng được nhận, trong khi những tin nhắn khác được chuyển tiếp đến các đối tượng ở cấp độ khác.

2.5 Kỷ niệm

Keeper (Memento) là một mẫu thiết kế hành vi cho phép bạn sửa và lưu trạng thái bên trong của đối tượng mà không vi phạm tính đóng gói để có thể khôi phục về trạng thái này sau này.

Người bảo vệ (Memento)

Mẫu Guardian được sử dụng khi:

  • cần lưu ảnh chụp nhanh trạng thái của đối tượng (hoặc một phần của đối tượng) để phục hồi sau này;
  • Giao diện trực tiếp để nhận trạng thái của một đối tượng hiển thị chi tiết triển khai và phá vỡ sự đóng gói đối tượng.
1
Nhiệm vụ
Mô-đun 3,  mức độbài học
Đã khóa
USB MP3 Player
task4118
1
Nhiệm vụ
Mô-đun 3,  mức độbài học
Đã khóa
Strategic shopping
task4119
1
Nhiệm vụ
Mô-đun 3,  mức độbài học
Đã khóa
Game of Life
task4120
1
Nhiệm vụ
Mô-đun 3,  mức độbài học
Đã khóa
Technical Support
task4121
1
Nhiệm vụ
Mô-đun 3,  mức độbài học
Đã khóa
Memento mori
task4122
Bình luận
  • Phổ biến
  • Mới
Bạn phải đăng nhập để đăng nhận xet
Trang này chưa có bất kỳ bình luận nào