From d8cb45997f5500699f71bd60013f2e1433b260a4 Mon Sep 17 00:00:00 2001
From: PhucVR <59957741+nguyenphuc22@users.noreply.github.com>
Date: Wed, 20 Mar 2024 22:36:05 +0700
Subject: [PATCH] Add changes to .idea/workspace.xml and
Writerside/topics/Visitor.md
---
.idea/workspace.xml | 43 +++++++++++++++++++-----------------
Writerside/topics/Visitor.md | 12 ++++++----
2 files changed, 31 insertions(+), 24 deletions(-)
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index dba7e9a..2d27d5b 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,7 +4,10 @@
-
+
+
+
+
@@ -87,28 +90,28 @@
- {
+ "keyToString": {
+ "RunOnceActivity.OpenProjectViewOnStart": "true",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "git-widget-placeholder": "main",
+ "kotlin-language-version-configured": "true",
+ "last_opened_file_path": "/Users/phucnguyen/Documents/GitHub/Design-Patterns",
+ "settings.editor.selected.configurable": "fileTemplates"
},
- "keyToStringList": {
- "stardust.markdown.MarkdownSplitEditorSuppressor:keyList": [
- "/Users/phucnguyen/Documents/GitHub/Design-Patterns/Writerside/topics/Builder.md",
- "/Users/phucnguyen/Documents/GitHub/Design-Patterns/Writerside/topics/Command.md",
- "/Users/phucnguyen/Documents/GitHub/Design-Patterns/Writerside/topics/Observer.md",
- "/Users/phucnguyen/Documents/GitHub/Design-Patterns/Writerside/topics/Proxy.md",
- "/Users/phucnguyen/Documents/GitHub/Design-Patterns/Writerside/topics/State.md",
- "/Users/phucnguyen/Documents/GitHub/Design-Patterns/Writerside/topics/Strategy.md",
- "/Users/phucnguyen/Documents/GitHub/Design-Patterns/Writerside/topics/Template-Method.md",
- "/Users/phucnguyen/Documents/GitHub/Design-Patterns/Writerside/topics/Visitor.md"
+ "keyToStringList": {
+ "stardust.markdown.MarkdownSplitEditorSuppressor:keyList": [
+ "/Users/phucnguyen/Documents/GitHub/Design-Patterns/Writerside/topics/Builder.md",
+ "/Users/phucnguyen/Documents/GitHub/Design-Patterns/Writerside/topics/Command.md",
+ "/Users/phucnguyen/Documents/GitHub/Design-Patterns/Writerside/topics/Observer.md",
+ "/Users/phucnguyen/Documents/GitHub/Design-Patterns/Writerside/topics/Proxy.md",
+ "/Users/phucnguyen/Documents/GitHub/Design-Patterns/Writerside/topics/State.md",
+ "/Users/phucnguyen/Documents/GitHub/Design-Patterns/Writerside/topics/Strategy.md",
+ "/Users/phucnguyen/Documents/GitHub/Design-Patterns/Writerside/topics/Template-Method.md",
+ "/Users/phucnguyen/Documents/GitHub/Design-Patterns/Writerside/topics/Visitor.md"
]
}
-}]]>
+}
diff --git a/Writerside/topics/Visitor.md b/Writerside/topics/Visitor.md
index 2daa2c4..2f3b637 100644
--- a/Writerside/topics/Visitor.md
+++ b/Writerside/topics/Visitor.md
@@ -1,12 +1,16 @@
# Visitor
-## Giới thiệu
+## Khái Niệm
-Visitor Pattern cho phép thêm các thao tác mới vào cấu trúc đối tượng hiện có mà không cần thay đổi code.
+**Visitor Pattern** là một mẫu thiết kế thuộc loại mẫu thiết kế hành vi (behavioral design pattern) trong phát triển phần mềm. Mẫu này giúp chúng ta tách biệt các phép toán khỏi đối tượng mà chúng hoạt động trên. Thông qua Visitor Pattern, chúng ta có thể thêm các chức năng mới mà không làm thay đổi các lớp của các đối tượng mà chúng tương tác.
-## Định nghĩa
+### Tổng quan
-Visitor Pattern tách biệt các thao tác cần thực hiện lên các đối tượng khỏi các đối tượng đó, bằng cách đưa logic vào một lớp Visitor riêng biệt.
+- **Định Nghĩa của Pattern:** Visitor Pattern cho phép một hoặc nhiều đối tượng 'Visitor' định nghĩa một tập hợp các phép toán để áp dụng lên một tập các đối tượng 'Element' mà không làm thay đổi mã nguồn của những đối tượng này. Các 'Element' có một phương thức 'accept' mà nó nhận một 'Visitor' làm tham số. 'Visitor' này sau đó được áp dụng cho đối tượng 'Element'.
+
+- **Mục Đích:** Mục đích chính của Visitor Pattern là cho phép thêm các hoạt động mới vào một tập hợp các lớp đối tượng mà không cần sửa đổi mã nguồn của chúng. Điều này giúp mã nguồn trở nên dễ dàng mở rộng hơn và giảm sự phụ thuộc giữa các chức năng và cấu trúc dữ liệu của đối tượng.
+
+- **Ý Tưởng Cốt Lõi:** Ý tưởng cốt lõi của Visitor Pattern là tách biệt thuật toán từ các đối tượng mà nó hoạt động trên. Điều này cho phép chúng ta thêm các thuật toán mới mà không thay đổi định nghĩa của các đối tượng. Khi cần thực hiện một hoạt động trên một tập hợp các đối tượng, chúng ta có thể định nghĩa một đối tượng Visitor chứa hoạt động đó và sau đó cho phép các đối tượng đó chấp nhận Visitor, từ đó áp dụng hoạt động mà không làm thay đổi mã nguồn của chúng.
## Mục đích