Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
1,21 MB
File đính kèm
Nhom1_Visitor.rar
(1 MB)
Nội dung
VISITOR DESIGN PATTERN Lecturer: Nguyễn Trần Thi Văn Group 12: Phùng Duy Thành – 14110179 Nguyễn Quang Vũ – 14110240 Hồng Văn Cơng – 14110014 Phạm Minh Thi – 14110186 Nội Dung Báo Cáo Đặt vấn đề, cài đặt Giới thiệu Visitor Cấu trúc Biến thể Các mẫu liên quan Ưu nhược điểm Demo minh họa Đặt vấn đề Cách cài đặt truyền thống Cách cài đặt truyền thống class Cat implements Animal { interface Animal { void say(); } class Dog implements Animal { public void gogo() { } public void hehe() { } @override public void say { gogo(); } } public void meomeo() { } public void hihi() { } @override public void say() {meomeo(); } } void somewhere() { Animal a = ; a.say(); } Cách Cài đặt khác interface Animal { class Cat implements Animal { void accept(Visitor v); @override public void accept(Visitor v) { } // trao thân cho Cat :v interface Visitor { v.visit(this); // hai method chuâẩ n bị sẵẵ n } void visit(Dog dog); public void meomeo() { } void visit(Cat cat); public void hihi() { } } } class Dog implements Animal { class SayVisitor implements Visitor { @override public void accept(Visitor v) { @override public void visit(Dog dog) { // trao thân cho Dog dog.gogo(); // dễẵdàng v.visit(this); } } @override public void visit(Cat cat) { public void gogo() { } cat.meomeo(); // dễẵdàng public void hehe() { } } } } Lược đồ UML Định Nghĩa • Visitor là mẩu thiếtkế (Design Patterns) thuộc Behavior Pattern, cho phép định nghĩa thao tác (operations) tập hợp đốitượng (objects) không đồng (về kiểu) mà không làm thay đổi định nghĩa lớp (classes) đốitượng Với thao tác thêm vào, lớp visitor tương ứng tạo ThiếtKẾ Các lớp visitor Visitor Các lớp đốitượng tập hợp đốitượng Client Lược đồ UML 10 VẤN ĐỀ PHÁT SINH Phát sinh vấn đề mới: Nếu danh sách lớp của Animal rất hay bị thay đổi, ví dụ có thêm lớp Bird, rõ ràng interface Visitor và tất lớp thực bị thay đổi để viếng thăm thêm con Bird 11 Biển thể Acyclic Visitor 12 Pattern Liên Quan • Composite: Visitors sử dụng để truy cập vào thao tác đối tượng, cấu trúc xác định Composite Pattern 13 ƯU Và Khuyết điểm Ưu điểm • Lợi ích Visitor cho phép chọn phương thức để gọi chạy biên dịch, phương thức có sẵn mở rộng dễ dàng • Việc thêm hoạt động dễ dàng Khuyết điểm: • Việc thêm vào lớp ConcreteElement khó • Phá vỡ tính đóng gói 14 DEMO ... thay đổi định nghĩa lớp (classes) đối tượng Với thao tác thêm vào, lớp visitor tương ứng tạo Thiết KẾ Các lớp visitor Visitor Các lớp đối tượng tập hợp đối tượng Client Lược đồ UML 10 VẤN ĐỀ PHÁT... mẩu thiết kế (Design Patterns) thuộc Behavior Pattern, cho phép định nghĩa thao tác (operations) tập hợp đối tượng (objects) không đồng (về kiểu) mà không làm thay đổi định nghĩa lớp (classes) đối. .. thể Acyclic Visitor 12 Pattern Liên Quan • Composite: Visitors sử dụng để truy cập vào thao tác đối tượng, cấu trúc xác định Composite Pattern 13 ƯU Và Khuyết điểm Ưu điểm • Lợi ích Visitor cho