Design Patterns: Các mẫu Behavioral

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Các mẫu Behavioral (hành vi) là các mẫu tập trung vào vấn đề giải quyết các thuật toán và sự phân chia trách nhiệm giữa các đối tượng. Mẫu hành vi không chỉ miêu tả mô hình của các đối tượng mà còn miêu tả mô hình trao đổi thông tin giữa chúng; đặc trưng hoá các luồng điều khiển phức tạp, giúp chúng ta tập trung hơn vào việc xây dựng cách thức liên kết giữa các đối tượng thay vì các luồng điều khiển.

Mẫu hành vi kiểu lớp sử dụng tính kế thừa để phân phối hành vi giữa các lớp. Dưới đây chúng ta sẽ nghiên cứu hai mẫu thuộc loại đó : Temple Method và Interpreter. Trong hai mẫu đó, Temple Method là mẫu đơn giản và thông dụng hơn. Nó định nghĩa trừu tượng từng bước của một thuật toán; mỗi bước sử dụng một hàm trừu tượng hoặc một hàm nguyên thuỷ. Các lớp con của nó làm sáng tỏ thuật toán cụ thể bằng cách cụ thể hoá các hàm trừu tượng. Mẫu Interpreter diễn tả văn phạm như một hệ thống phân cấp của các lớp và trình phiên dịch như một thủ tục tác động lên các thể hiện của các lớp đó.

Mẫu hành vi kiểu đối tượng lại sử dụng đối tượng thành phần thay vì thừa kế. Một vài mẫu miêu tả cách thức một nhóm các đối tượng ngang hàng hợp tác với nhau để thi hành các tác vụ mà không một đối tượng riêng lẻ nào có thể tự thi hành. Một vấn đề quan trọng được đặt ra ở đây là bằng cách nào các đối tượng ngang hàng đó biết đựơc sự tồn tại của nhau. Cách đơn giản nhất và cũng “dư thừa” nhất là lưu trữ các tham chiếu trực tiếp đến nhau trong các đối tượng ngang hàng. Mẫu Mediator tránh sự thừa thãi này bằng cách xây dựng kết nối trung gian, liên kết gián tiếp các đối tượng ngang hàng.

Mẫu Chain of Responsibility xây dựng mô hình liên kết thậm chí còn “lỏng” hơn. Nó cho phép gửi yêu cầu đến một đối tượng thông qua chuỗi các đối tượng “ứng cử”. Mỗi ứng cử viên có khả năng thực hiện yêu cầu tuỳ thuộc vào các điều kiện trong thời gian chạy. Số lượng ứng cử viên là một con số mở và ta có thể lựa chọn những ứng cử viên nào sẽ tham gia vào chuỗi trong thời gian chạy.

Mẫu Observer xây dựng và vận hành một sự phụ thuộc giữa các đối tượng. Một ví dụ cụ thể của mẫu này là mô hình Model/View/Controller của Smalltalk trong đó tất cả các views của model đều đựơc thông báo khi trạng thái của model có sự thay đổi.

Một số mẫu hành vi khác lại quan tâm đến việc đóng gói các hành vi vào một đối tượng và “uỷ thác” các yêu cầu cho nó. Mẫu Strategy đóng gói một thuật toán trong một đối tượng, xây dựng cơ chế khiến cho vịêc xác định và thay đổi thuật toán mà đối tượng sử dụng trở nên đơn giản. Trong khi đó mẫu Command lại đóng gói một yêu cầu vào một đối tượng; làm cho nó có thể được truyền như một tham số, được lưu trữ trong một history list hoặc thao tác theo những cách thức khác. Mẫu State đóng gói các trạng thái của một đối tượng, làm cho đối tượng có khả năng thay đổi hành vi của mình khi trạng thái thay đổi. Mẫu Visitor đóng gói các hành vi vốn được phân phối trong nhiều lớp và mẫu Iterator trừu tượng hoá cách thức truy cập và duyệt các đối tượng trong một tập hợp.

» Tiếp: Mẫu Chain of Responsibility
« Trước: Proxy
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!