Tải bản đầy đủ (.pptx) (16 trang)

thiết kế phần mềm hướng đối tượng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (762.16 KB, 16 trang )

VISITOR DESIGN PATTERN
Lecturer: Nguyễn Trần Thi Văn
Group 12: Phùng Duy Thành
– 14110179
Nguyễn Quang Vũ
– 14110240
Hoà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 cơ bản
 Biến thể
 Các mẫu liên quan
 Ưu và nhược điểm
 Demo minh họa

2


Đặt vấn đề

3


Cách cài đặt truyền thống


4


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();
}

5



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 mình cho Cat :v

interface Visitor {

    v.visit(this);

  // đây là hai method được 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 mình cho Dog

    dog.gogo(); // quá dễẵdàng

    v.visit(this);

  }

  }

  @override public void visit(Cat cat) {

  public void gogo() {...}

    cat.meomeo(); // quá dễẵdàng

  public void hehe() {...}


  }

}

}

6


Lược đồ UML

7


Định Nghĩa

• Visitor là mẩu thiết kế (Design Patterns) thuộc Behavior Pattern, cho phép định nghĩa các thao tác (operations) trên một tập
hợp các đối tượng (objects) không đồng nhất (về kiểu) mà không làm thay đổi định nghĩa về lớp (classes) của các đối tượng
đó.

 Với mỗi thao tác được thêm vào, một lớp visitor tương ứng được tạo.

8


Thiết KẾ

Các lớp visitor


Visitor

Các lớp của các đối tượng trong tập hợp các
đối tượng

Client

9


Lược đồ UML

10


VẤN ĐỀ PHÁT SINH
Phát sinh vấn đề mới:

 Nếu danh sách lớp con của Animal rất hay bị thay đổi, ví dụ khi có thêm lớp Bird, thì rõ ràng
interface Visitor và tất cả các lớp hiện thực nó cũng sẽ bị thay đổi để có thể viếng thăm được thêm
con Bird.

11


Biển thể Acyclic Visitor

12



Pattern Liên Quan



Composite: Visitors có thể được sử dụng để truy cập vào một thao tác trên một đối tượng, cấu trúc của nó được xác định bởi
Composite Pattern.

13


ƯU Và Khuyết điểm

 Ưu điểm
• Lợi ích cơ bản của Visitor là cho phép chọn đúng phương thức để gọi khi chạy chứ không phải là khi biên dịch, các
phương thức có sẵn được mở rộng dễ dàng.

• Việc thêm các hoạt động mới là dễ dàng.
 Khuyết điểm:
• Việc thêm vào các lớp ConcreteElement là rất khó.
• Phá vỡ tính đóng gói.

14


DEMO





×