Trước khi bạn nói với tôi rằng đã có một câu hỏi tương tự, vâng, tôi biết, tôi đã đọc it. Nhưng câu hỏi ở đó tập trung vào khi, tôi quan tâm đến lý do tại sao.Một lý do chính đáng để sử dụng mẫu thiết kế của Khách truy cập là gì?
Tôi hiểu cách hoạt động của mọi thứ. Ví dụ: động vật, chó, mèo luôn hoạt động như một nét duyên dáng.
Vấn đề là mã này
int main()
{
Cat c;
Sound theSound;
c.letsDo(&theSound);
}
dường như không tự nhiên đối với tôi. Tại sao? Tôi có nghĩa là, vâng, theo cách này tôi có các mô hình Chó và Mèo không phân biệt (lần đầu tiên tôi sử dụng từ đó trong tiếng Anh btw) vì implentation thực được ẩn dưới lớp Âm thanh nhưng không phải chỉ là một cách để cân nhắc mã của bạn? Không phải là đa hình đủ để làm một cái gì đó như thế này?
Với tôi sự khác biệt là với đa hình, bạn phải chỉnh sửa từng lớp (nhưng mô hình vẫn giữ nguyên, phải không?) Trong khi bạn chỉ cần chỉnh sửa một lớp với mẫu thiết kế của khách truy cập.
Chính xác, hành vi có thể được thực hiện bởi bên thứ ba. –
Ok, nhưng nếu bạn định nghĩa trình phân tích cú pháp cho SQL thì bạn đã có định nghĩa ngữ pháp chưa? Trường hợp sử dụng bất ngờ ở đâu? Trên thực tế kể từ khi chúng tôi đang nói về phân tích cú pháp, không phải là một trình tạo phân tích cú pháp một ví dụ thích hợp hơn? Ở đó bạn có một ngữ pháp tùy ý, do đó bạn phải định nghĩa một lớp tập hợp cây chung. – dierre
Nó không phải về cấu trúc của SQL. Đó là về cách khách hàng có thể sử dụng kết quả/đầu ra của thư viện của bạn. Ví dụ trình phân tích cú pháp được sử dụng đơn giản vì nó hơi "cổ điển". BTW, nếu bạn có một API hoàn toàn chung (tùy ý "DOM" giống như các nút) mà không có một cấu trúc cố định, bạn có thể tốt hơn với cách tiếp cận chung accessor thay vì mô hình khách truy cập. – Dirk