1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

12 246 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 401,24 KB
File đính kèm Nhom1_Visitor.rar (1 MB)

Nội dung

Vấn đề ở đây là khi chúng ta muốn thêm một phương thức mới cho vào interface Phương tiện thì tất cả các đối tượng sẽ phải thêm vào phương thức mới này dù có thực hiện hay không ShowThong

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO MÔN HỌC

THIẾT KẾ PHẦN MỀM HƯỚNG ĐỐI TƯỢNG

VISITOR PATTERN GVHD: Ths Nguyễn Trần Thi Văn

Trang 2

Mục lục

1 Giới thiệu đề tài 2

1.1 Đặt vấn đề 2

1.2 Tổng quan 3

Định nghĩa 3

Khi nào nên sử dụng visitor pattern 3

2 Chi tiết về Visitor pattern 3

2.1 Sơ đồ và ý nghĩa 3

2.2 Ưu và nhược điểm 4

Ưu điểm 4

Nhược điểm 5

2.3 Các mẫu liên quan 6

2.4 Biến thể 7

Trang 3

1 Gi i thi u đ tài ới thiệu đề tài ệu đề tài ề tài

1.1 Đ t v n đ ặt vấn đề ấn đề ề tài

Giả sử chúng ta có một cấu trúc bao gồm các đối tượng xe máy, oto 4 chỗ, oto 7 chỗ có cùng một interface là Phương tiện Các đối tượng này sẽ override lại các phương thức của interface bao gồm showThongTin(), ThanhThoan(Km)

Vấn đề ở đây là khi chúng ta muốn thêm một phương thức mới cho vào interface Phương tiện thì tất cả các đối tượng sẽ phải thêm vào phương thức mới này dù có thực hiện hay không

ShowThongTin() ThanhToan(km)

Phương tiện

ShowThongTin()

ThanhToan(km)

Xe máy

ShowThongTin() ThanhToan(km)

Oto 4 chỗ

ShowThongTin() ThanhToan(km)

Oto 7 chỗ

ShowThongTin() ThanhToan(km)

ThanhToanThe()

Phương tiện

ShowThongTin()

ThanhToan(km)

ThanhToanThe()

Xe máy

ShowThongTin() ThanhToan(km)

ThanhToanThe()

Oto 4 chỗ

ShowThongTin() ThanhToan(km)

ThanhToanThe()

Oto 7 chỗ

Trang 4

Việc này sẽ làm rất tốn thời gian đặc biệt là trong các phần mềm lớn có rất nhiều lớp đối tượng và có khả năng sẽ thêm rất nhiều phương thức khi cần thiết Chính vì vậy mà Visitor pattern

ra đời để phần nào giải quyết được vấn đề này

Trang 5

1.2.T ng quan ổng quan

Đ nh nghĩa ịnh nghĩa

Visitor là mẩu thiết kế thuộc nhóm Behavioral 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 đó Để đạt được điều này, trong mẩu thiết kế visitor ta định nghĩa các thao tác trên các lớp tách biệt gọi các lớp visitors, các lớp này cho phép tách rời các thao tác với các đối tượng mà nó tác động đến Với mỗi thao tác được thêm vào, một lớp visitor tương ứng được tạo ra

Khi nào nên s d ng visitor pattern ử dụng visitor pattern ụng visitor pattern

Khi có nhiều lớp đối tượng với cấu hình khác nhau và ta muốn thực hiện những phương thức giống nhau về hình thức nhưng khác nhau về cách thức và phụ thuộc và những đối tượng ấy

Khi chúng ta muốn thêm, hoặc thay đổi các lớp phương thức thì việc sử dụng visitor sẽ giúp ta không phải định nghĩa lại trên các lớp đối tượng

Trang 6

2 Chi ti t v Visitor pattern ết về Visitor pattern ề tài 2.1 S đ và ý nghĩa ơ đồ và ý nghĩa ồ và ý nghĩa

Trang 7

Visitor: Là 1 interface định nghĩa các phương thức Với mỗi kiểu của các đối tượng

(ConcreteElement) ta có một phương thức visit với tham số truyền vào là một thực thể của kiểu đó Mỗi phương thức như thế có nhiệm vụ xử lý trên các thực thể của lớp tương ứng

ConcreteVisitor: Overide lại các phương thức của cha Mỗi phương thức như thế có

nhiệm vụ xử lý trên các thực thể của lớp tương ứng

ConcreteElement: Overide lại phương thức Accept của cha Thực hiện các phương

thức trong lớp Visitor Trong cài đặt của phương thức này ta gọi hàm visit của visitor với tham số chính là đối tượng gọi

Element: Là 1 interface định nghĩa phương thức Accept có tham số là visitor

Trang 8

2.2 Ưu và nhược điểm u và nh ược điểm c đi m ểm

u đi m

Ưu và nhược điểm ểm

Visitor khiến việc thêm các phương thức dễ dàng hơn Khi muốn thêm một phương

mới chúng ta chỉ cần tạo lớp phương thức implement interface visitor và override lại các phương thức cha

Trang 9

Visitor thu thập các phương thức liên quan lại với nhau, đơn giản hóa việc sử dụng các phương thức phụ thuộc vào đối tượng cần sử dụng

Các thuật toán, cách sử dụng cấu trúc dữ liệu sẽ được ẩn thông qua việc sử dụng

visitor

Nh ược điểm c đi m ểm

Khi có một đối tượng mới như là lớp MayBay và chúng ta muốn thêm vào và kế thừa lớp PhuongTien Để có thể thực hiện các phương thức, thao tác cần thiết trên đối tượng MayBay chúng ta cần phải thêm phương thức Visit(MayBay) vào interface Visitor điều này đồng nghĩa với việc các lớp con cũng phải thêm phương thức này Trong một số trường hợp đối tượng MayBay không cần sử dụng 1 số phương thức chúng ta cũng phải thêm Việc này tốn khá nhiều thời gian và công sức nếu chương trình có cấu trúc lớn

visitor Visit ( XeMay ) Visit ( Oto4Slot ) Visit ( Oto7Slot )

ThanhToan Visit ( XeMay ) Visit ( Oto4Slot ) Visit ( Oto7Slot )

XemThongTin

Visit ( XeMay )

Visit ( Oto4Slot )

Visit ( Oto7Slot )

ThanhToanThe Visit ( XeMay ) Visit ( Oto4Slot ) Visit ( Oto7Slot )

visit or Visit ( XeMay )

Visit ( Oto4Slot ) Visit

( Oto7Slot )

Visit ( MayBay)ThanhTo

an Visit ( XeMay )

Visit ( Oto4Slot ) Visit

( Oto7Slot )

Visit ( MayBay)

XemThong

Tin

Visit ( XeMay

)

Visit

( Oto4Slot )

Visit

( Oto7Slot )

Visit

( MayBay)

ThanhToanT he

Visit ( XeMay )

Visit ( Oto4Slot ) Visit

( Oto7Slot )

Visit ( MayBay)

Trang 10

2.3 Các m u liên quan ẫu liên quan

Visitor có liên quan tới 2 mẫu thiết kế đó là Composite và Interpreter trong phần này Chúng ta sẽ xét mẫu Composite

Visitor có thể được áp dụng để thay thế các phương thức trong cấu trúc đối tượng được định nghĩa bởi Composite Pattern

Đây là cấu trúc Composite pattern cơ bản

Visit ( XeMay )

Visit ( Oto4Slot ) Visit

( Oto7Slot )

Visit ( MayBay)

Trang 11

Các phương thức operation() đã được chuyển thành phương thức Accept(Visior v).Các phương thức đã độc lập với các đối tượng khi cần thiết chúng ta có thể chỉnh sửa hoặc thêm vào mà không ảnh hương đến cấu trúc đối tượng composite

2.4 Bi n th ết về Visitor pattern ểm

Như đã trình bày thì nhược điểm của visitor pattern là việc thêm 1 đối tượng mới sẽ rất khó khăn khi ta thêm một lớp đối tượng mới Vì thế ta có biến thể của Visitor pattern là Acyclic visitor

Trang 12

Với lớp interface ban đầu sẽ là 1 lớp interface không có phương thức Với mỗi lớp đối tượng ta tạo một interface visitor cho đối tượng đó các phương thức nếu sử dụng đối tượng nào sẽ hiện thực hóa đối tượng đó Khi thêm môt lớp đối tượng vào chỉ những

phương thức phụ thuộc vào đối tượng đó mới cần hiện thực hóa đối tượng Vì lớp interface Visitor là một lớp không có phương thức nên trong hàm accept ta phải ép kiểu cho lớp visitor Chỉ những phương thức đã hiện thực hóa lớp đối tượng tương ứng mới có thể được visit

Ngày đăng: 14/02/2019, 20:20

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w