Design Patterns: Mẫu Visitor


Khóa học qua video:
Lập trình Python All C# Lập trình C Java SQL Server PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên

Định nghĩa

Visitor là mẫu thiết kế xác định sườn của một giải thuật trong một thao tác, theo một số bước của các phân lớp. Template Method cho phép các lớp con xác định lại  chắc chắn một số bước của một giải thuật bên ngoài cấu trúc của giải thuật đó.

Sơ đồ UML

Visitor: UML Diagram

 

  • Visitor:

+ Đưa ra một thao tác Visit cho mỗi lớp của ConcreteElement trong cấu trúc đối tượng. Tên và dấu hiệu của các thao tác này nhận dạng lớp gửi yêu cầu Visit tới visitor, nó cho phép visitor quyết định lớp cụ thể nào của thành phần được thăm. Sau đó visitor có thể truy nhập thành phần trực tiếp thông qua giao diện đặc biệt của nó.

  • ConcreteVisitor:

+ Thực hiện mỗi thao tác được đưa ra bởi Visitor. Mỗi thao tác thực hiện một phần của giải thuật định nghĩa cho lớp phù hợp của đối tượng trong cấu trúc. ConcreteVisitor cung cấp ngữ cảnh cho giải thuật và lưu trữ trạng thái cục bộ của nó.

  • Element:

+ Định nghĩa một thao tác Accept, thao tác này mang một visitor như là một đối số.

  • ConcreteElement:

+ Thực hiện một thao tác Accept, thao tác này mang một visitor như là một đối số.

  • ObjectStructure:

+ Có thể đếm các thành phần của nó.

+ Có thể cung cấp một giao diện mức cao cho phép visitor thăm các thành phần của nó.

+ Có thể là một composite hoặc một sưu tập như danh sách hay tập hợp.

Vận dụng

Sử dụng Visitor pattern khi:

  • Một cấu trúc đối tượng chứa đựng nhiều lớp của các đối tượng với các giao diện khác nhau, và ta muốn thực hiện các thao tác trên các đối tượng này thì đòi hỏi các lớp cụ thể của chúng.
  • Nhiều thao tác khác nhau và không có mối liên hệ nào cần được thực hiện trên các đối tượng trong một cấu trúc đối tượng, và ta muốn tránh “làm hỏng” các lớp của chúng khi thực hiện các thao tác đó. Visitor cho phép ta giữ các thao tác có mối liên hệ với nhau bằng cách định nghĩa chúng trong một lớp. Khi một cấu trúc đối tượng được chia sẻ bởi nhiều ứng dụng, sử dụng Visitor để đặt các thao tác này vào trong các ứng dụng cần chúng.
  • Các lớp định nghĩa các cấu trúc đối tượng hiếm khi thay đổi, nhưng ta muốn định nghĩa các thao tác mới trên các cấu trúc. Thay đổi các lớp cấu trúc yêu cầu định nghĩa lại giao diện cho tất cả các visitor.

Mẫu liên quan

Các Visitor có thể được sử dụng để cung cấp một thao tác trên một cấu trúc đối tượng được định nghĩa bởi mẫu Composite. Visitor có thể được cung cấp để làm thông dịch.

» Tiếp: Ứng dụng design pattern trong thực tế phân tích thiết kế phần mềm hướng đối tượng
« Trước: Mẫu Template Method
Khóa học qua video:
Lập trình Python All C# Lập trình C Java SQL Server PHP HTML5-CSS3-JavaScript
Đăng ký Hội viên
Tất cả các video dành cho hội viên
Copied !!!