Skip to content

Commit 119fcb2

Browse files
committed
Refactor Visitor Pattern documentation
1 parent dcadc02 commit 119fcb2

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

.idea/workspace.xml

Lines changed: 1 addition & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Writerside/topics/Visitor.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -221,14 +221,16 @@ public class ZooVisitorDemo {
221221

222222
Trong ví dụ này, `FeedingVisitor``ExercisingVisitor` đại diện cho các hoạt động cụ thể được thực hiện trên các loài động vật. Mỗi loài động vật (`Lion`, `Tiger`, `Elephant`) đều triển khai interface `Animal` và định nghĩa phương thức `accept()` để chấp nhận `AnimalVisitor`. Phần demo `ZooVisitorDemo` minh họa cách thức các `Animal` được "thăm" bởi các `AnimalVisitor` để thực hiện feeding và exercising mà không cần sửa đổi code trong các lớp `Animal`.
223223

224-
## Ví dụ
224+
## Khi nào nên sử dụng Visitor Pattern
225225

226-
// Ví dụ minh họa Visitor Pattern áp dụng cho việc xuất tài liệu
226+
- **Khi bạn có cấu trúc đối tượng phức tạp**: Visitor Pattern là một lựa chọn tốt khi bạn đang làm việc với một cấu trúc đối tượng phức tạp, chẳng hạn như một cây đối tượng, và bạn muốn thực hiện các thao tác trên các đối tượng trong cấu trúc mà không làm thay đổi định nghĩa của chúng. Visitor cho phép bạn thêm chức năng mới mà không sửa đổi các lớp đối tượng.
227227

228-
## So sánh với các Pattern
228+
- **Khi bạn cần thực hiện các thao tác qua nhiều đối tượng thuộc nhiều lớp khác nhau**: Nếu bạn cần thực hiện một loạt các thao tác trên một nhóm đối tượng khác nhau mà không muốn ô nhiễm mã của chúng với logic hoạt động, Visitor Pattern cung cấp một cách để tập trung logic hoạt động trong một đối tượng visitor duy nhất.
229229

230-
So với Strategy, Visitor tách logic ra khỏi các đối tượng, trong khi Strategy nhóm các thuật toán lại với nhau.
230+
- **Khi bạn muốn tách biệt logic hoạt động khỏi cấu trúc đối tượng**: Visitor Pattern giúp tách biệt logic hoạt động khỏi cấu trúc đối tượng, giúp mã nguồn dễ quản lý và bảo trì hơn. Điều này đặc biệt hữu ích khi logic hoạt động hoặc cấu trúc đối tượng thay đổi thường xuyên.
231231

232-
## Kết luận
232+
- **Khi bạn muốn cung cấp một bộ các thao tác có thể áp dụng trên đối tượng mà không thay đổi cấu trúc đối tượng**: Visitor Pattern cho phép bạn định nghĩa một bộ các thao tác có thể áp dụng trên các đối tượng khác nhau. Điều này giúp tăng tính mô-đun và tái sử dụng của mã, vì bạn có thể thêm các thao tác mới mà không ảnh hưởng đến định nghĩa của đối tượng.
233233

234-
Visitor Pattern giúp tách rời các thao tác khỏi các đối tượng thực thi, giúp dễ dàng bảo trì và mở rộng. Tuy nhiên cũng cần cân nhắc để tránh lạm dụng dẫn đến phức tạp code.
234+
- **Khi bạn muốn thu thập thông tin qua nhiều đối tượng khác nhau mà không liên quan đến cấu trúc nội bộ của chúng**: Visitor Pattern cho phép bạn thực hiện các thao tác trên một nhóm đối tượng mà không cần biết đến cấu trúc nội bộ của chúng, điều này giúp giảm sự phụ thuộc và tăng tính bảo mật cho cấu trúc đối tượng.
235+
236+
- **Khi bạn cần đảm bảo rằng các thao tác khác nhau có thể được thực hiện mà không cần sửa đổi các đối tượng**: Visitor Pattern cung cấp một cách để bạn thêm các thao tác mới mà không cần sửa đổi mã nguồn của đối tượng, giúp hệ thống của bạn dễ dàng mở rộng và bảo trì.

0 commit comments

Comments
 (0)