Mẫu thiết kế Master-Slave

Một phần của tài liệu Công nghệ tác tử di động và ứng dụng trong quản lý giám sát mạng (Trang 51)

ASDK cung cấp hai mẫu thiết kế cơ bản là mẫu Master-Slave và mẫu Itinerary [12].

3.4.1. Mẫu thiết kế Master-Slave.Định nghĩa Định nghĩa

Mẫu thiết kế Master-Slave định nghĩa một master-aglet có khả năng giao phó một công việc cho một Slave-aglet.

Mục đích thiết kế

Có một số lý do để một master-aglet muốn tạo các Slave-aglet khác và giao phó công việc cho chúng.

- Hiệu năng: master-aglet có thể tiếp tục thực hiện những công việc khác song song với Slave-aglet.

- Lý do thứ hai có thể được mô tả qua ví dụ sau: giả sử một ứng dụng nền- aglet cung cấp một giao diện đồ họa người dùng (GUI) để nhận dữ liệu đầu vào và hiển thị các kết quả trung gian của một công việc cụ thể được thực hiện ở xa. Nếu một aglet đơn lẻ vừa cung cấp GUI và thực hiện công việc đó, thì không thể duy trì GUI khi aglet di chuyển từ vị trí gốc tới một điểm đến ở xa. Thay vào đó, master-aglet tĩnh có thể cung cấp và duy trì GUI trong khi slave-aglet di chuyển tới một điểm đến khác, thực hiện công việc được giao và truyền kết quả công việc về master-aglet để hiển thị cho người dùng.

Mẫu thiết kế Master-Slave được xây dựng dựa trên ý tưởng là sử dụng một lớp trừu tượng, cần cục bộ hóa các phần của việc giao phó cho một công việc giữa master và slave-aglet: gửi một Slave tới một điểm đến ở xa, khởi tạo

Các aglet cụ thể được định nghĩa như các lớp con, chỉ có các phần cụ thể như công việc cần thực hiện cần phải được thi hành.

Trong thực tế, master-aglet định nghĩa một trình kiểm soát thông điệp quan tâm đến kết quả các công việc và có lớp hai phương thức trừu tượng initializeTask và doTask, định nghĩa các bước khởi tạo và thực hiện trước khi aglet di chuyển tới một điểm đến mới và công việc cụ thể.

Áp dụng

Mẫu thiết kế Master-Slave có thể được dùng trong các trường hợp:

+ Khi một aglet cần thực hiện một tác vụ song song với các tác vụ khác mà nó chịu trách nhiệm.

+ Khi một aglet tĩnh muốn thực hiện một tác vụ tại một điểm đích ở xa. Trong cả hai trường hợp các tác vụ chỉ được thực hiện tại một điểm đích duy nhất.

Các đối tượng tham gia:

Có ba đối tượng tham gia trong mẫu thiết kế Master-Slave:

1) Slave định nghĩa bộ khung của một slave, sử dụng các phương thức trừu tượng (InitializeTask và Task), sẽ được overridden trong lớp ConcreteSlave.

2) ConcreteSlave thực hiện hai phương thức trừu tượng của lớp.

3) Master thực hiện aglet sẽ tạo ra slave-aglet và nhận thông điệp kết quả của các slave.

Sự cộng tác:

Sự cộng tác giữa các đối tượng trong mẫu thiết kế Master-Slave: 1) Master-aglet tạo một slave-aglet.

2) Slave-aglet khởi tạo tác vụ của nó. Slave Abstract initializeTask() Abstract doTask() Master initializeTask() doTask() ConcreteSlave createAglet sendMessage()- Result initializeTask(){ } doTask(){ }

3) Slave-aglet di chuyển tới trạm ở xa và thực hiện tác vụ của nó. 4) Slave-aglet gửi kết quả thực hiện công việc về cho master-aglet. 5) Slave-aglet tự hủy nó.

Đánh giá:

Khuyết điểm của mẫu thiết kế nền tảng kế thừa là hành vi của slave-aglet bị cố định ngay ở thời điểm thiết kế. Ví dụ, một aglet không thể được biến thành một salve-aglet trong thời gian chạy, cũng không thể dễ dàng ấn định cho nó thực hiện công việc mới. Một phiên bản phức tạp hơn của mẫu thiết kế này là sử dụng một mô hình nền-ủy thác, trong đó công việc được đối tượng hóa và có thể ấn định đối tượng công việc bất kỳ cho một slave-aglet trong thời gian chạy.

Một phần của tài liệu Công nghệ tác tử di động và ứng dụng trong quản lý giám sát mạng (Trang 51)